Skip to content

Commit

Permalink
Merge pull request kubernetes-sigs#4986 from KnVerey/repospec_custom_…
Browse files Browse the repository at this point in the history
…usernames

repospec: support ssh urls with ssh certificates
  • Loading branch information
k8s-ci-robot authored Jan 20, 2023
2 parents 0a1aa7c + 2405da6 commit a69092c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
9 changes: 5 additions & 4 deletions api/internal/git/repospec.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"log"
"net/url"
"path/filepath"
"regexp"
"strconv"
"strings"
"time"
Expand Down Expand Up @@ -343,8 +344,10 @@ func extractScheme(s string) (string, string) {
}

func extractUsername(s string) (string, string) {
if trimmed, found := trimPrefixIgnoreCase(s, gitUsername); found {
return gitUsername, trimmed
var userRegexp = regexp.MustCompile(`^([a-zA-Z][a-zA-Z0-9-]*)@`)
if m := userRegexp.FindStringSubmatch(s); m != nil {
username := m[1] + "@"
return username, s[len(username):]
}
return "", s
}
Expand Down Expand Up @@ -375,8 +378,6 @@ func findPathSeparator(hostPath string, acceptSCP bool) int {
return sepIndex
}

const gitUsername = "git@"

func normalizeGithubHostParts(scheme, username string) (string, string, string) {
if strings.HasPrefix(scheme, sshScheme) || username != "" {
return "", username, "github.com:"
Expand Down
24 changes: 24 additions & 0 deletions api/internal/git/repospec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ func TestNewRepoSpecFromUrl_Permute(t *testing.T) {
{"git@github.com:", "git@github.com:"},
{"git@github.com/", "git@github.com:"},
{"git::git@github.com:", "git@github.com:"},
{"org-12345@github.com:", "org-12345@github.com:"},
{"org-12345@github.com/", "org-12345@github.com:"},
}
var repoPaths = []string{"someOrg/someRepo", "kubernetes/website"}
var pathNames = []string{"README.md", "foo/krusty.txt", ""}
Expand Down Expand Up @@ -637,6 +639,28 @@ func TestNewRepoSpecFromUrl_Smoke(t *testing.T) {
KustRootPath: "path/to/kustomization/root",
},
},
{
name: "ssh on github with custom username for custom ssh certificate authority",
input: "ssh://org-12345@github.com/kubernetes-sigs/kustomize",
cloneSpec: "org-12345@github.com:kubernetes-sigs/kustomize.git",
absPath: notCloned.String(),
repoSpec: RepoSpec{
Host: "org-12345@github.com:",
RepoPath: "kubernetes-sigs/kustomize",
GitSuffix: ".git",
},
},
{
name: "scp on github with custom username for custom ssh certificate authority",
input: "org-12345@github.com/kubernetes-sigs/kustomize",
cloneSpec: "org-12345@github.com:kubernetes-sigs/kustomize.git",
absPath: notCloned.String(),
repoSpec: RepoSpec{
Host: "org-12345@github.com:",
RepoPath: "kubernetes-sigs/kustomize",
GitSuffix: ".git",
},
},
}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
Expand Down

0 comments on commit a69092c

Please sign in to comment.