diff --git a/pkg/state/helmx.go b/pkg/state/helmx.go index 988afc08..b337cd30 100644 --- a/pkg/state/helmx.go +++ b/pkg/state/helmx.go @@ -303,8 +303,9 @@ func (st *HelmState) appendShowOnlyFlags(flags []string, showOnly []string) []st } type Chartify struct { - Opts *chartify.ChartifyOpts - Clean func() + Opts *chartify.ChartifyOpts + Clean func() + NeedsChartifyForLocalDir bool } func (st *HelmState) downloadChartWithGoGetter(r *ReleaseSpec) (string, error) { @@ -375,6 +376,7 @@ func (st *HelmState) PrepareChartify(helm helmexec.Interface, release *ReleaseSp if stat, _ := os.Stat(dir); stat != nil && stat.IsDir() { if exists, err := st.fs.FileExists(filepath.Join(dir, "Chart.yaml")); err == nil && !exists { shouldRun = true + c.NeedsChartifyForLocalDir = true } } diff --git a/pkg/state/state.go b/pkg/state/state.go index cec6396d..27b48dd0 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -1764,7 +1764,7 @@ func (st *HelmState) prepareChartForRelease(release *ReleaseSpec, helm helmexec. skipRefreshDefault := release.SkipRefresh == nil && st.HelmDefaults.SkipRefresh skipRefresh := !isLocal || skipRefreshGlobal || skipRefreshRelease || skipRefreshDefault - if chartification != nil && helmfileCommand != "pull" { + if chartification != nil && (helmfileCommand != "pull" || chartification.NeedsChartifyForLocalDir) { // Issue #2297: Normalize local chart paths before chartification // When using transformers with local charts like "../chart", the chartify process // needs an absolute path, otherwise it tries "helm pull ../chart" which fails diff --git a/test/integration/run.sh b/test/integration/run.sh index 5f4dfdde..6826406c 100755 --- a/test/integration/run.sh +++ b/test/integration/run.sh @@ -107,6 +107,7 @@ ${kubectl} create namespace ${test_ns} || fail "Could not create namespace ${tes . ${dir}/test-cases/skip-diff-output.sh . ${dir}/test-cases/v1-subhelmfile-multi-bases-with-array-values.sh . ${dir}/test-cases/kustomized-fetch.sh +. ${dir}/test-cases/issue-2503-kustomize-fetch.sh . ${dir}/test-cases/regression.sh . ${dir}/test-cases/secretssops.sh . ${dir}/test-cases/yaml-overwrite.sh diff --git a/test/integration/test-cases/issue-2503-kustomize-fetch.sh b/test/integration/test-cases/issue-2503-kustomize-fetch.sh new file mode 100644 index 00000000..110fc255 --- /dev/null +++ b/test/integration/test-cases/issue-2503-kustomize-fetch.sh @@ -0,0 +1,14 @@ +issue_2503_input_dir="${cases_dir}/issue-2503-kustomize-fetch/input" + +test_start "issue-2503 helmfile fetch with kustomization directory" + +info "Testing helmfile fetch with local kustomization directory (issue #2503)" + +for i in $(seq 3); do + info "Testing helmfile fetch with kustomization #$i" + issue_2503_tmp=$(mktemp -d) + ${helmfile} -f ${issue_2503_input_dir}/helmfile.yaml fetch --output-dir ${issue_2503_tmp} || fail "\"helmfile fetch\" shouldn't fail with kustomization directory" + rm -fr ${issue_2503_tmp} +done + +test_pass "issue-2503 helmfile fetch with kustomization directory" diff --git a/test/integration/test-cases/issue-2503-kustomize-fetch/input/helmfile.yaml b/test/integration/test-cases/issue-2503-kustomize-fetch/input/helmfile.yaml new file mode 100644 index 00000000..2dfe0f91 --- /dev/null +++ b/test/integration/test-cases/issue-2503-kustomize-fetch/input/helmfile.yaml @@ -0,0 +1,3 @@ +releases: +- name: test-kustomize + chart: ./kustomize diff --git a/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/configmap.yaml b/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/configmap.yaml new file mode 100644 index 00000000..4d913f17 --- /dev/null +++ b/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/configmap.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: test-configmap +data: + key: value diff --git a/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/kustomization.yaml b/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/kustomization.yaml new file mode 100644 index 00000000..4eb24440 --- /dev/null +++ b/test/integration/test-cases/issue-2503-kustomize-fetch/input/kustomize/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- configmap.yaml