Skip to content

Commit 68432b1

Browse files
committed
fix: Do not skip passing values files when adhocDependencies/jsonPatches/jsonPatches exist
This is a follow-up for #1172
1 parent 16288df commit 68432b1

File tree

2 files changed

+79
-19
lines changed

2 files changed

+79
-19
lines changed

pkg/state/helmx.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package state
22

33
import (
4+
"github.com/roboll/helmfile/pkg/helmexec"
45
"github.com/variantdev/chartify"
56
"strings"
67
)
@@ -19,11 +20,15 @@ func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) ([]s
1920
return flags, nil
2021
}
2122

22-
func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.ChartifyOpts) {
23+
func (st *HelmState) PrepareChartify(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) (bool, *chartify.ChartifyOpts, error) {
2324
var opts chartify.ChartifyOpts
2425

2526
var shouldRun bool
2627

28+
opts.EnableKustomizeAlphaPlugins = true
29+
30+
opts.ChartVersion = release.Version
31+
2732
for _, d := range release.Dependencies {
2833
var dep string
2934

@@ -52,7 +57,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
5257
if len(jsonPatches) > 0 {
5358
generatedFiles, err := st.generateTemporaryValuesFiles(jsonPatches, release.MissingFileHandler)
5459
if err != nil {
55-
return false, nil
60+
return false, nil, err
5661
}
5762

5863
for _, f := range generatedFiles {
@@ -68,7 +73,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
6873
if len(strategicMergePatches) > 0 {
6974
generatedFiles, err := st.generateTemporaryValuesFiles(strategicMergePatches, release.MissingFileHandler)
7075
if err != nil {
71-
return false, nil
76+
return false, nil, err
7277
}
7378

7479
for _, f := range generatedFiles {
@@ -80,5 +85,14 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
8085
shouldRun = true
8186
}
8287

83-
return shouldRun, &opts
88+
if shouldRun {
89+
generatedFiles, err := st.generateValuesFiles(helm, release, workerIndex)
90+
if err != nil {
91+
return false, nil, err
92+
}
93+
94+
opts.ValuesFiles = generatedFiles
95+
}
96+
97+
return shouldRun, &opts, nil
8498
}

pkg/state/state.go

Lines changed: 61 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
718718
type downloadResults struct {
719719
releaseName string
720720
chartPath string
721+
err error
721722
}
722723
errs := []error{}
723724

@@ -739,11 +740,17 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
739740
}
740741
close(jobQueue)
741742
},
742-
func(_ int) {
743+
func(workerIndex int) {
743744
for release := range jobQueue {
744745
var chartPath string
745746

746-
if shouldChartify, opts := st.PrepareChartify(release); shouldChartify {
747+
shouldChartify, opts, err := st.PrepareChartify(helm, release, workerIndex)
748+
if err != nil {
749+
results <- &downloadResults{err: err}
750+
return
751+
}
752+
753+
if shouldChartify {
747754
c := chartify.New(
748755
chartify.HelmBin(st.DefaultHelmBinary),
749756
chartify.UseHelm3(helm3),
@@ -787,12 +794,18 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
787794
}
788795
}
789796

790-
results <- &downloadResults{release.Name, chartPath}
797+
results <- &downloadResults{releaseName: release.Name, chartPath: chartPath}
791798
}
792799
},
793800
func() {
794801
for i := 0; i < len(st.Releases); i++ {
795802
downloadRes := <-results
803+
804+
if downloadRes.err != nil {
805+
errs = append(errs, downloadRes.err)
806+
807+
return
808+
}
796809
temp[downloadRes.releaseName] = downloadRes.chartPath
797810
}
798811
},
@@ -1886,12 +1899,7 @@ func (st *HelmState) generateTemporaryValuesFiles(values []interface{}, missingF
18861899
return generatedFiles, nil
18871900
}
18881901

1889-
func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
1890-
flags := []string{}
1891-
if release.Namespace != "" {
1892-
flags = append(flags, "--namespace", release.Namespace)
1893-
}
1894-
1902+
func (st *HelmState) generateVanillaValuesFiles(release *ReleaseSpec) ([]string, error) {
18951903
values := []interface{}{}
18961904
for _, v := range release.Values {
18971905
switch typedValue := v.(type) {
@@ -1918,12 +1926,14 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
19181926
return nil, err
19191927
}
19201928

1921-
for _, f := range generatedFiles {
1922-
flags = append(flags, "--values", f)
1923-
}
1924-
19251929
release.generatedValues = append(release.generatedValues, generatedFiles...)
19261930

1931+
return generatedFiles, nil
1932+
}
1933+
1934+
func (st *HelmState) generateSecretValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
1935+
var generatedFiles []string
1936+
19271937
for _, value := range release.Secrets {
19281938
paths, skip, err := st.storage().resolveFile(release.MissingFileHandler, "secrets", release.ValuesPathPrefix+value)
19291939
if err != nil {
@@ -1944,9 +1954,45 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
19441954
return nil, err
19451955
}
19461956

1947-
release.generatedValues = append(release.generatedValues, valfile)
1948-
flags = append(flags, "--values", valfile)
1957+
generatedFiles = append(generatedFiles, valfile)
1958+
}
1959+
1960+
release.generatedValues = append(release.generatedValues, generatedFiles...)
1961+
1962+
return generatedFiles, nil
1963+
}
1964+
1965+
func (st *HelmState) generateValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
1966+
valuesFiles, err := st.generateVanillaValuesFiles(release)
1967+
if err != nil {
1968+
return nil, err
1969+
}
1970+
1971+
secretValuesFiles, err := st.generateSecretValuesFiles(helm, release, workerIndex)
1972+
if err != nil {
1973+
return nil, err
1974+
}
1975+
1976+
files := append(valuesFiles, secretValuesFiles...)
1977+
1978+
return files, nil
1979+
}
1980+
1981+
func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
1982+
flags := []string{}
1983+
if release.Namespace != "" {
1984+
flags = append(flags, "--namespace", release.Namespace)
19491985
}
1986+
1987+
generatedFiles, err := st.generateValuesFiles(helm, release, workerIndex)
1988+
if err != nil {
1989+
return nil, err
1990+
}
1991+
1992+
for _, f := range generatedFiles {
1993+
flags = append(flags, "--values", f)
1994+
}
1995+
19501996
if len(release.SetValues) > 0 {
19511997
for _, set := range release.SetValues {
19521998
if set.Value != "" {

0 commit comments

Comments
 (0)