mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-18 18:49:50 +02:00
Support for azure acr helm repositories (#1526)
Adds a basic support for Helm repositories hosted on Azure Container Registry (not OCI but classic ones). Add a new field to RepositorySpec to state that is externally managed and runs the `az-cli` command instead of the helm one to manage the repository.
This commit is contained in:
+3
-2
@@ -157,6 +157,7 @@ type RepositorySpec struct {
|
||||
KeyFile string `yaml:"keyFile,omitempty"`
|
||||
Username string `yaml:"username,omitempty"`
|
||||
Password string `yaml:"password,omitempty"`
|
||||
Managed string `yaml:"managed,omitempty"`
|
||||
}
|
||||
|
||||
// ReleaseSpec defines the structure of a helm release
|
||||
@@ -313,7 +314,7 @@ func (st *HelmState) ApplyOverrides(spec *ReleaseSpec) {
|
||||
}
|
||||
|
||||
type RepoUpdater interface {
|
||||
AddRepo(name, repository, cafile, certfile, keyfile, username, password string) error
|
||||
AddRepo(name, repository, cafile, certfile, keyfile, username, password string, managed string) error
|
||||
UpdateRepo() error
|
||||
}
|
||||
|
||||
@@ -355,7 +356,7 @@ func (st *HelmState) SyncRepos(helm RepoUpdater, shouldSkip map[string]bool) ([]
|
||||
continue
|
||||
}
|
||||
|
||||
if err := helm.AddRepo(repo.Name, repo.URL, repo.CaFile, repo.CertFile, repo.KeyFile, repo.Username, repo.Password); err != nil {
|
||||
if err := helm.AddRepo(repo.Name, repo.URL, repo.CaFile, repo.CertFile, repo.KeyFile, repo.Username, repo.Password, repo.Managed); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
+15
-4
@@ -857,7 +857,18 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
||||
},
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "", ""},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "", "", ""},
|
||||
},
|
||||
{
|
||||
name: "ACR hosted repository",
|
||||
repos: []RepositorySpec{
|
||||
{
|
||||
Name: "name",
|
||||
Managed: "acr",
|
||||
},
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "", "", "", "", "", "", "acr"},
|
||||
},
|
||||
{
|
||||
name: "repository with cert and key",
|
||||
@@ -872,7 +883,7 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
||||
},
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "certfile", "keyfile", "", ""},
|
||||
want: []string{"name", "http://example.com/", "", "certfile", "keyfile", "", "", ""},
|
||||
},
|
||||
{
|
||||
name: "repository with ca file",
|
||||
@@ -886,7 +897,7 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
||||
},
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "cafile", "", "", "", ""},
|
||||
want: []string{"name", "http://example.com/", "cafile", "", "", "", "", ""},
|
||||
},
|
||||
{
|
||||
name: "repository with username and password",
|
||||
@@ -901,7 +912,7 @@ func TestHelmState_SyncRepos(t *testing.T) {
|
||||
},
|
||||
},
|
||||
helm: &exectest.Helm{},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password"},
|
||||
want: []string{"name", "http://example.com/", "", "", "", "example_user", "example_password", ""},
|
||||
},
|
||||
}
|
||||
for i := range tests {
|
||||
|
||||
Reference in New Issue
Block a user