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,12 +1926,14 @@ 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 | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
| 		if err != nil { | ||||
|  | @ -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