fix: Do not skip passing values files when adhocDependencies/jsonPatches/jsonPatches exist
This is a follow-up for #1172
This commit is contained in:
parent
16288dfa7d
commit
68432b1848
|
|
@ -1,6 +1,7 @@
|
|||
package state
|
||||
|
||||
import (
|
||||
"github.com/roboll/helmfile/pkg/helmexec"
|
||||
"github.com/variantdev/chartify"
|
||||
"strings"
|
||||
)
|
||||
|
|
@ -19,11 +20,15 @@ func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) ([]s
|
|||
return flags, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.ChartifyOpts) {
|
||||
func (st *HelmState) PrepareChartify(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) (bool, *chartify.ChartifyOpts, error) {
|
||||
var opts chartify.ChartifyOpts
|
||||
|
||||
var shouldRun bool
|
||||
|
||||
opts.EnableKustomizeAlphaPlugins = true
|
||||
|
||||
opts.ChartVersion = release.Version
|
||||
|
||||
for _, d := range release.Dependencies {
|
||||
var dep string
|
||||
|
||||
|
|
@ -52,7 +57,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
|
|||
if len(jsonPatches) > 0 {
|
||||
generatedFiles, err := st.generateTemporaryValuesFiles(jsonPatches, release.MissingFileHandler)
|
||||
if err != nil {
|
||||
return false, nil
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
for _, f := range generatedFiles {
|
||||
|
|
@ -68,7 +73,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
|
|||
if len(strategicMergePatches) > 0 {
|
||||
generatedFiles, err := st.generateTemporaryValuesFiles(strategicMergePatches, release.MissingFileHandler)
|
||||
if err != nil {
|
||||
return false, nil
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
for _, f := range generatedFiles {
|
||||
|
|
@ -80,5 +85,14 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char
|
|||
shouldRun = true
|
||||
}
|
||||
|
||||
return shouldRun, &opts
|
||||
if shouldRun {
|
||||
generatedFiles, err := st.generateValuesFiles(helm, release, workerIndex)
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
opts.ValuesFiles = generatedFiles
|
||||
}
|
||||
|
||||
return shouldRun, &opts, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -718,6 +718,7 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
|
|||
type downloadResults struct {
|
||||
releaseName string
|
||||
chartPath string
|
||||
err error
|
||||
}
|
||||
errs := []error{}
|
||||
|
||||
|
|
@ -739,11 +740,17 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
|
|||
}
|
||||
close(jobQueue)
|
||||
},
|
||||
func(_ int) {
|
||||
func(workerIndex int) {
|
||||
for release := range jobQueue {
|
||||
var chartPath string
|
||||
|
||||
if shouldChartify, opts := st.PrepareChartify(release); shouldChartify {
|
||||
shouldChartify, opts, err := st.PrepareChartify(helm, release, workerIndex)
|
||||
if err != nil {
|
||||
results <- &downloadResults{err: err}
|
||||
return
|
||||
}
|
||||
|
||||
if shouldChartify {
|
||||
c := chartify.New(
|
||||
chartify.HelmBin(st.DefaultHelmBinary),
|
||||
chartify.UseHelm3(helm3),
|
||||
|
|
@ -787,12 +794,18 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren
|
|||
}
|
||||
}
|
||||
|
||||
results <- &downloadResults{release.Name, chartPath}
|
||||
results <- &downloadResults{releaseName: release.Name, chartPath: chartPath}
|
||||
}
|
||||
},
|
||||
func() {
|
||||
for i := 0; i < len(st.Releases); i++ {
|
||||
downloadRes := <-results
|
||||
|
||||
if downloadRes.err != nil {
|
||||
errs = append(errs, downloadRes.err)
|
||||
|
||||
return
|
||||
}
|
||||
temp[downloadRes.releaseName] = downloadRes.chartPath
|
||||
}
|
||||
},
|
||||
|
|
@ -1886,12 +1899,7 @@ func (st *HelmState) generateTemporaryValuesFiles(values []interface{}, missingF
|
|||
return generatedFiles, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
|
||||
flags := []string{}
|
||||
if release.Namespace != "" {
|
||||
flags = append(flags, "--namespace", release.Namespace)
|
||||
}
|
||||
|
||||
func (st *HelmState) generateVanillaValuesFiles(release *ReleaseSpec) ([]string, error) {
|
||||
values := []interface{}{}
|
||||
for _, v := range release.Values {
|
||||
switch typedValue := v.(type) {
|
||||
|
|
@ -1918,11 +1926,13 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
|
|||
return nil, err
|
||||
}
|
||||
|
||||
for _, f := range generatedFiles {
|
||||
flags = append(flags, "--values", f)
|
||||
release.generatedValues = append(release.generatedValues, generatedFiles...)
|
||||
|
||||
return generatedFiles, nil
|
||||
}
|
||||
|
||||
release.generatedValues = append(release.generatedValues, generatedFiles...)
|
||||
func (st *HelmState) generateSecretValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
|
||||
var generatedFiles []string
|
||||
|
||||
for _, value := range release.Secrets {
|
||||
paths, skip, err := st.storage().resolveFile(release.MissingFileHandler, "secrets", release.ValuesPathPrefix+value)
|
||||
|
|
@ -1944,9 +1954,45 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R
|
|||
return nil, err
|
||||
}
|
||||
|
||||
release.generatedValues = append(release.generatedValues, valfile)
|
||||
flags = append(flags, "--values", valfile)
|
||||
generatedFiles = append(generatedFiles, valfile)
|
||||
}
|
||||
|
||||
release.generatedValues = append(release.generatedValues, generatedFiles...)
|
||||
|
||||
return generatedFiles, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) generateValuesFiles(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
|
||||
valuesFiles, err := st.generateVanillaValuesFiles(release)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
secretValuesFiles, err := st.generateSecretValuesFiles(helm, release, workerIndex)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
files := append(valuesFiles, secretValuesFiles...)
|
||||
|
||||
return files, nil
|
||||
}
|
||||
|
||||
func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) {
|
||||
flags := []string{}
|
||||
if release.Namespace != "" {
|
||||
flags = append(flags, "--namespace", release.Namespace)
|
||||
}
|
||||
|
||||
generatedFiles, err := st.generateValuesFiles(helm, release, workerIndex)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, f := range generatedFiles {
|
||||
flags = append(flags, "--values", f)
|
||||
}
|
||||
|
||||
if len(release.SetValues) > 0 {
|
||||
for _, set := range release.SetValues {
|
||||
if set.Value != "" {
|
||||
|
|
|
|||
Loading…
Reference in New Issue