feat: retrieve repository's username/password from environment
Signed-off-by: Kevin Leturc <kevinleturc@users.noreply.github.com>
This commit is contained in:
parent
b5d54d6921
commit
422852dd9a
|
|
@ -148,7 +148,9 @@ repositories:
|
|||
url: http://roboll.io/charts
|
||||
certFile: optional_client_cert
|
||||
keyFile: optional_client_key
|
||||
# username is retrieve from the environment with the format <registryNameUpperCase>_USERNAME for CI usage, here ROBOLL_USERNAME
|
||||
username: optional_username
|
||||
# username is retrieve from the environment with the format <registryNameUpperCase>_PASSWORD for CI usage, here ROBOLL_PASSWORD
|
||||
password: optional_password
|
||||
oci: true
|
||||
passCredentials: true
|
||||
|
|
|
|||
|
|
@ -433,14 +433,14 @@ func (st *HelmState) SyncRepos(helm RepoUpdater, shouldSkip map[string]bool) ([]
|
|||
if shouldSkip[repo.Name] {
|
||||
continue
|
||||
}
|
||||
username, password := gatherUsernamePassword(repo.Name, repo.Username, repo.Password)
|
||||
var err error
|
||||
if repo.OCI {
|
||||
username, password := gatherOCIUsernamePassword(repo.Name, repo.Username, repo.Password)
|
||||
if username != "" && password != "" {
|
||||
err = helm.RegistryLogin(repo.URL, username, password)
|
||||
}
|
||||
} else {
|
||||
err = helm.AddRepo(repo.Name, repo.URL, repo.CaFile, repo.CertFile, repo.KeyFile, repo.Username, repo.Password, repo.Managed, repo.PassCredentials, repo.SkipTLSVerify)
|
||||
err = helm.AddRepo(repo.Name, repo.URL, repo.CaFile, repo.CertFile, repo.KeyFile, username, password, repo.Managed, repo.PassCredentials, repo.SkipTLSVerify)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
|
@ -453,7 +453,7 @@ func (st *HelmState) SyncRepos(helm RepoUpdater, shouldSkip map[string]bool) ([]
|
|||
return updated, nil
|
||||
}
|
||||
|
||||
func gatherOCIUsernamePassword(repoName string, username string, password string) (string, string) {
|
||||
func gatherUsernamePassword(repoName string, username string, password string) (string, string) {
|
||||
var user, pass string
|
||||
|
||||
replacedRepoName := strings.ToUpper(strings.Replace(repoName, "-", "_", -1))
|
||||
|
|
|
|||
|
|
@ -964,6 +964,48 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
|||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "true", ""},
|
||||
},
|
||||
{
|
||||
name: "repository without username and password and environment with username and password",
|
||||
repos: []RepositorySpec{
|
||||
{
|
||||
Name: "name",
|
||||
URL: "http://example.com/",
|
||||
CertFile: "",
|
||||
KeyFile: "",
|
||||
Username: "",
|
||||
Password: "",
|
||||
PassCredentials: "",
|
||||
SkipTLSVerify: "",
|
||||
},
|
||||
},
|
||||
envs: map[string]string{
|
||||
"NAME_USERNAME": "example_user",
|
||||
"NAME_PASSWORD": "example_password",
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", "", "", ""},
|
||||
},
|
||||
{
|
||||
name: "repository with username and password and environment with username and password",
|
||||
repos: []RepositorySpec{
|
||||
{
|
||||
Name: "name",
|
||||
URL: "http://example.com/",
|
||||
CertFile: "",
|
||||
KeyFile: "",
|
||||
Username: "example_user1",
|
||||
Password: "example_password1",
|
||||
PassCredentials: "",
|
||||
SkipTLSVerify: "",
|
||||
},
|
||||
},
|
||||
envs: map[string]string{
|
||||
"NAME_USERNAME": "example_user2",
|
||||
"NAME_PASSWORD": "example_password2",
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "example_user1", "example_password1", "", "", ""},
|
||||
},
|
||||
{
|
||||
name: "repository with skip-tls-verify",
|
||||
repos: []RepositorySpec{
|
||||
|
|
@ -2432,7 +2474,7 @@ func TestReverse(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func Test_gatherOCIUsernamePassword(t *testing.T) {
|
||||
func Test_gatherUsernamePassword(t *testing.T) {
|
||||
type args struct {
|
||||
repoName string
|
||||
username string
|
||||
|
|
@ -2451,7 +2493,7 @@ func Test_gatherOCIUsernamePassword(t *testing.T) {
|
|||
{
|
||||
name: "pass username/password from args",
|
||||
args: args{
|
||||
repoName: "myOCIRegistry",
|
||||
repoName: "myRegistry",
|
||||
username: "username1",
|
||||
password: "password1",
|
||||
},
|
||||
|
|
@ -2461,11 +2503,11 @@ func Test_gatherOCIUsernamePassword(t *testing.T) {
|
|||
{
|
||||
name: "repoName does not contain hyphen, read username/password from environment variables",
|
||||
args: args{
|
||||
repoName: "myOCIRegistry",
|
||||
repoName: "myRegistry",
|
||||
},
|
||||
envUsernameKey: "MYOCIREGISTRY_USERNAME",
|
||||
envUsernameKey: "MYREGISTRY_USERNAME",
|
||||
envUsernameValue: "username2",
|
||||
envPasswordKey: "MYOCIREGISTRY_PASSWORD",
|
||||
envPasswordKey: "MYREGISTRY_PASSWORD",
|
||||
envPasswordValue: "password2",
|
||||
wantUsername: "username2",
|
||||
wantPassword: "password2",
|
||||
|
|
@ -2473,11 +2515,11 @@ func Test_gatherOCIUsernamePassword(t *testing.T) {
|
|||
{
|
||||
name: "repoName contain hyphen, read username/password from environment variables",
|
||||
args: args{
|
||||
repoName: "my-oci-registry",
|
||||
repoName: "my-registry",
|
||||
},
|
||||
envUsernameKey: "MY_OCI_REGISTRY_USERNAME",
|
||||
envUsernameKey: "MY_REGISTRY_USERNAME",
|
||||
envUsernameValue: "username3",
|
||||
envPasswordKey: "MY_OCI_REGISTRY_PASSWORD",
|
||||
envPasswordKey: "MY_REGISTRY_PASSWORD",
|
||||
envPasswordValue: "password3",
|
||||
wantUsername: "username3",
|
||||
wantPassword: "password3",
|
||||
|
|
@ -2493,9 +2535,9 @@ func Test_gatherOCIUsernamePassword(t *testing.T) {
|
|||
t.Setenv(tt.envPasswordKey, tt.envPasswordValue)
|
||||
}
|
||||
|
||||
gotUsername, gotPassword := gatherOCIUsernamePassword(tt.args.repoName, tt.args.username, tt.args.password)
|
||||
gotUsername, gotPassword := gatherUsernamePassword(tt.args.repoName, tt.args.username, tt.args.password)
|
||||
if gotUsername != tt.wantUsername || gotPassword != tt.wantPassword {
|
||||
t.Errorf("gatherOCIUsernamePassword() = got username/password %v/%v, want username/password %v/%v", gotUsername, gotPassword, tt.wantUsername, tt.wantPassword)
|
||||
t.Errorf("gatherUsernamePassword() = got username/password %v/%v, want username/password %v/%v", gotUsername, gotPassword, tt.wantUsername, tt.wantPassword)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue