Trim slash for configure URL. (#2381)
This commit is contained in:
parent
c5d6842d5f
commit
a462ecbe79
|
|
@ -12,7 +12,7 @@ metadata:
|
||||||
labels:
|
labels:
|
||||||
{{- include "gha-runner-scale-set.labels" . | nindent 4 }}
|
{{- include "gha-runner-scale-set.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
githubConfigUrl: {{ required ".Values.githubConfigUrl is required" .Values.githubConfigUrl }}
|
githubConfigUrl: {{ required ".Values.githubConfigUrl is required" (trimSuffix "/" .Values.githubConfigUrl) }}
|
||||||
githubConfigSecret: {{ include "gha-runner-scale-set.githubsecret" . }}
|
githubConfigSecret: {{ include "gha-runner-scale-set.githubsecret" . }}
|
||||||
{{- with .Values.runnerGroup }}
|
{{- with .Values.runnerGroup }}
|
||||||
runnerGroup: {{ . }}
|
runnerGroup: {{ . }}
|
||||||
|
|
|
||||||
|
|
@ -869,3 +869,31 @@ func TestTemplateNamingConstraints(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTemplateRenderedGitHubConfigUrlEndsWIthSlash(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
// Path to the helm chart we will test
|
||||||
|
helmChartPath, err := filepath.Abs("../../gha-runner-scale-set")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
releaseName := "test-runners"
|
||||||
|
namespaceName := "test-" + strings.ToLower(random.UniqueId())
|
||||||
|
|
||||||
|
options := &helm.Options{
|
||||||
|
SetValues: map[string]string{
|
||||||
|
"githubConfigUrl": "https://github.com/actions/",
|
||||||
|
"githubConfigSecret.github_token": "gh_token12345",
|
||||||
|
},
|
||||||
|
KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
|
||||||
|
}
|
||||||
|
|
||||||
|
output := helm.RenderTemplate(t, options, helmChartPath, releaseName, []string{"templates/autoscalingrunnerset.yaml"})
|
||||||
|
|
||||||
|
var ars v1alpha1.AutoscalingRunnerSet
|
||||||
|
helm.UnmarshalK8SYaml(t, output, &ars)
|
||||||
|
|
||||||
|
assert.Equal(t, namespaceName, ars.Namespace)
|
||||||
|
assert.Equal(t, "test-runners", ars.Name)
|
||||||
|
assert.Equal(t, "https://github.com/actions", ars.Spec.GitHubConfigUrl)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ type GitHubConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseGitHubConfigFromURL(in string) (*GitHubConfig, error) {
|
func ParseGitHubConfigFromURL(in string) (*GitHubConfig, error) {
|
||||||
u, err := url.Parse(in)
|
u, err := url.Parse(strings.Trim(in, "/"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -45,7 +45,7 @@ func ParseGitHubConfigFromURL(in string) (*GitHubConfig, error) {
|
||||||
|
|
||||||
invalidURLError := fmt.Errorf("%q: %w", u.String(), ErrInvalidGitHubConfigURL)
|
invalidURLError := fmt.Errorf("%q: %w", u.String(), ErrInvalidGitHubConfigURL)
|
||||||
|
|
||||||
pathParts := strings.Split(strings.TrimPrefix(u.Path, "/"), "/")
|
pathParts := strings.Split(strings.Trim(u.Path, "/"), "/")
|
||||||
|
|
||||||
switch len(pathParts) {
|
switch len(pathParts) {
|
||||||
case 1: // Organization
|
case 1: // Organization
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package actions_test
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/actions-runner-controller/github/actions"
|
"github.com/actions/actions-runner-controller/github/actions"
|
||||||
|
|
@ -26,6 +27,16 @@ func TestGitHubConfig(t *testing.T) {
|
||||||
IsHosted: true,
|
IsHosted: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
configURL: "https://github.com/org/repo/",
|
||||||
|
expected: &actions.GitHubConfig{
|
||||||
|
Scope: actions.GitHubScopeRepository,
|
||||||
|
Enterprise: "",
|
||||||
|
Organization: "org",
|
||||||
|
Repository: "repo",
|
||||||
|
IsHosted: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/org",
|
configURL: "https://github.com/org",
|
||||||
expected: &actions.GitHubConfig{
|
expected: &actions.GitHubConfig{
|
||||||
|
|
@ -46,6 +57,16 @@ func TestGitHubConfig(t *testing.T) {
|
||||||
IsHosted: true,
|
IsHosted: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
configURL: "https://github.com/enterprises/my-enterprise/",
|
||||||
|
expected: &actions.GitHubConfig{
|
||||||
|
Scope: actions.GitHubScopeEnterprise,
|
||||||
|
Enterprise: "my-enterprise",
|
||||||
|
Organization: "",
|
||||||
|
Repository: "",
|
||||||
|
IsHosted: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://www.github.com/org",
|
configURL: "https://www.github.com/org",
|
||||||
expected: &actions.GitHubConfig{
|
expected: &actions.GitHubConfig{
|
||||||
|
|
@ -56,6 +77,16 @@ func TestGitHubConfig(t *testing.T) {
|
||||||
IsHosted: true,
|
IsHosted: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
configURL: "https://www.github.com/org/",
|
||||||
|
expected: &actions.GitHubConfig{
|
||||||
|
Scope: actions.GitHubScopeOrganization,
|
||||||
|
Enterprise: "",
|
||||||
|
Organization: "org",
|
||||||
|
Repository: "",
|
||||||
|
IsHosted: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.localhost/org",
|
configURL: "https://github.localhost/org",
|
||||||
expected: &actions.GitHubConfig{
|
expected: &actions.GitHubConfig{
|
||||||
|
|
@ -76,11 +107,21 @@ func TestGitHubConfig(t *testing.T) {
|
||||||
IsHosted: false,
|
IsHosted: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
configURL: "https://my-ghes.com/org/",
|
||||||
|
expected: &actions.GitHubConfig{
|
||||||
|
Scope: actions.GitHubScopeOrganization,
|
||||||
|
Enterprise: "",
|
||||||
|
Organization: "org",
|
||||||
|
Repository: "",
|
||||||
|
IsHosted: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.configURL, func(t *testing.T) {
|
t.Run(test.configURL, func(t *testing.T) {
|
||||||
parsedURL, err := url.Parse(test.configURL)
|
parsedURL, err := url.Parse(strings.Trim(test.configURL, "/"))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
test.expected.ConfigURL = parsedURL
|
test.expected.ConfigURL = parsedURL
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue