diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go index b4cd9187c7..361702772a 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -1295,7 +1295,7 @@ func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclie return nil, "", fmt.Errorf("error getting helm repos: %w", err) } - h, err := helm.NewHelmApp(appPath, helmRepos, isLocal, version, proxy, q.Repo.NoProxy, passCredentials) + h, err := helm.NewHelmApp(appPath, helmRepos, isLocal, version, proxy, q.Repo.NoProxy, passCredentials, q.Repo.Insecure) if err != nil { return nil, "", fmt.Errorf("error initializing helm app object: %w", err) } @@ -2256,7 +2256,7 @@ func populateHelmAppDetails(res *apiclient.RepoAppDetailsResponse, appPath strin if err != nil { return err } - h, err := helm.NewHelmApp(appPath, helmRepos, false, version, q.Repo.Proxy, q.Repo.NoProxy, passCredentials) + h, err := helm.NewHelmApp(appPath, helmRepos, false, version, q.Repo.Proxy, q.Repo.NoProxy, passCredentials, q.Repo.Insecure) if err != nil { return err } diff --git a/util/helm/cmd.go b/util/helm/cmd.go index 2ad981065b..7a1e9f03ce 100644 --- a/util/helm/cmd.go +++ b/util/helm/cmd.go @@ -327,8 +327,12 @@ func (c *Cmd) PullOCI(repo string, chart string, version string, destination str return out, nil } -func (c *Cmd) dependencyBuild() (string, error) { - out, _, err := c.run(context.Background(), "dependency", "build") +func (c *Cmd) dependencyBuild(insecure bool) (string, error) { + args := []string{"dependency", "build"} + if insecure { + args = append(args, "--insecure-skip-tls-verify") + } + out, _, err := c.run(context.Background(), args...) if err != nil { return "", fmt.Errorf("failed to build dependencies: %w", err) } diff --git a/util/helm/cmd_test.go b/util/helm/cmd_test.go index 6206f9d95e..e85223cf2d 100644 --- a/util/helm/cmd_test.go +++ b/util/helm/cmd_test.go @@ -135,6 +135,36 @@ func TestRegistryLogin(t *testing.T) { } } +func TestDependencyBuild(t *testing.T) { + tests := []struct { + name string + insecure bool + expectedOut string + }{ + { + name: "without insecure", + insecure: false, + expectedOut: "helm dependency build", + }, + { + name: "with insecure", + insecure: true, + expectedOut: "helm dependency build --insecure-skip-tls-verify", + }, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + c, err := newCmdWithVersion(".", false, "", "", func(cmd *exec.Cmd, _ func(_ string) string) (string, error) { + return strings.Join(cmd.Args, " "), nil + }) + require.NoError(t, err) + out, err := c.dependencyBuild(tc.insecure) + require.NoError(t, err) + assert.Equal(t, tc.expectedOut, out) + }) + } +} + func TestRegistryLogout(t *testing.T) { tests := []struct { name string diff --git a/util/helm/helm.go b/util/helm/helm.go index ef8d2fa89b..f9980c8440 100644 --- a/util/helm/helm.go +++ b/util/helm/helm.go @@ -43,20 +43,21 @@ type Helm interface { } // NewHelmApp create a new wrapper to run commands on the `helm` command-line tool. -func NewHelmApp(workDir string, repos []HelmRepository, isLocal bool, version string, proxy string, noProxy string, passCredentials bool) (Helm, error) { +func NewHelmApp(workDir string, repos []HelmRepository, isLocal bool, version string, proxy string, noProxy string, passCredentials bool, insecure bool) (Helm, error) { cmd, err := NewCmd(workDir, version, proxy, noProxy) if err != nil { return nil, fmt.Errorf("failed to create new helm command: %w", err) } cmd.IsLocal = isLocal - return &helm{repos: repos, cmd: *cmd, passCredentials: passCredentials}, nil + return &helm{repos: repos, cmd: *cmd, passCredentials: passCredentials, insecure: insecure}, nil } type helm struct { cmd Cmd repos []HelmRepository passCredentials bool + insecure bool } var _ Helm = &helm{} @@ -108,7 +109,7 @@ func (h *helm) DependencyBuild() error { } } h.repos = nil - _, err := h.cmd.dependencyBuild() + _, err := h.cmd.dependencyBuild(h.insecure) if err != nil { return fmt.Errorf("failed to build helm dependencies: %w", err) } diff --git a/util/helm/helm_test.go b/util/helm/helm_test.go index 786335216c..ee2ad42ee2 100644 --- a/util/helm/helm_test.go +++ b/util/helm/helm_test.go @@ -25,7 +25,7 @@ func template(h Helm, opts *TemplateOpts) ([]*unstructured.Unstructured, error) } func TestHelmTemplateParams(t *testing.T) { - h, err := NewHelmApp("./testdata/minio", []HelmRepository{}, false, "", "", "", false) + h, err := NewHelmApp("./testdata/minio", []HelmRepository{}, false, "", "", "", false, false) require.NoError(t, err) opts := TemplateOpts{ Name: "test", @@ -58,7 +58,7 @@ func TestHelmTemplateValues(t *testing.T) { repoRoot := "./testdata/redis" repoRootAbs, err := filepath.Abs(repoRoot) require.NoError(t, err) - h, err := NewHelmApp(repoRootAbs, []HelmRepository{}, false, "", "", "", false) + h, err := NewHelmApp(repoRootAbs, []HelmRepository{}, false, "", "", "", false, false) require.NoError(t, err) valuesPath, _, err := path.ResolveValueFilePathOrUrl(repoRootAbs, repoRootAbs, "values-production.yaml", nil) require.NoError(t, err) @@ -84,7 +84,7 @@ func TestHelmGetParams(t *testing.T) { repoRoot := "./testdata/redis" repoRootAbs, err := filepath.Abs(repoRoot) require.NoError(t, err) - h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false) + h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false, false) require.NoError(t, err) params, err := h.GetParameters(nil, repoRootAbs, repoRootAbs) require.NoError(t, err) @@ -97,7 +97,7 @@ func TestHelmGetParamsValueFiles(t *testing.T) { repoRoot := "./testdata/redis" repoRootAbs, err := filepath.Abs(repoRoot) require.NoError(t, err) - h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false) + h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false, false) require.NoError(t, err) valuesPath, _, err := path.ResolveValueFilePathOrUrl(repoRootAbs, repoRootAbs, "values-production.yaml", nil) require.NoError(t, err) @@ -112,7 +112,7 @@ func TestHelmGetParamsValueFilesThatExist(t *testing.T) { repoRoot := "./testdata/redis" repoRootAbs, err := filepath.Abs(repoRoot) require.NoError(t, err) - h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false) + h, err := NewHelmApp(repoRootAbs, nil, false, "", "", "", false, false) require.NoError(t, err) valuesMissingPath, _, err := path.ResolveValueFilePathOrUrl(repoRootAbs, repoRootAbs, "values-missing.yaml", nil) require.NoError(t, err) @@ -126,7 +126,7 @@ func TestHelmGetParamsValueFilesThatExist(t *testing.T) { } func TestHelmTemplateReleaseNameOverwrite(t *testing.T) { - h, err := NewHelmApp("./testdata/redis", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/redis", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{Name: "my-release"}) @@ -144,7 +144,7 @@ func TestHelmTemplateReleaseNameOverwrite(t *testing.T) { } func TestHelmTemplateReleaseName(t *testing.T) { - h, err := NewHelmApp("./testdata/redis", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/redis", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{Name: "test"}) require.NoError(t, err) @@ -206,7 +206,7 @@ func Test_flatVals(t *testing.T) { } func TestAPIVersions(t *testing.T) { - h, err := NewHelmApp("./testdata/api-versions", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/api-versions", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{}) @@ -221,7 +221,7 @@ func TestAPIVersions(t *testing.T) { } func TestKubeVersionWithSymbol(t *testing.T) { - h, err := NewHelmApp("./testdata/tests", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/tests", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{KubeVersion: "1.30.11+IKS"}) @@ -244,7 +244,7 @@ func TestKubeVersionWithSymbol(t *testing.T) { } func TestSkipCrds(t *testing.T) { - h, err := NewHelmApp("./testdata/crds", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/crds", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{SkipCrds: false}) @@ -261,7 +261,7 @@ func TestSkipCrds(t *testing.T) { } func TestSkipTests(t *testing.T) { - h, err := NewHelmApp("./testdata/tests", nil, false, "", "", "", false) + h, err := NewHelmApp("./testdata/tests", nil, false, "", "", "", false, false) require.NoError(t, err) objs, err := template(h, &TemplateOpts{SkipTests: false})