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 | package state | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"github.com/roboll/helmfile/pkg/helmexec" | ||||||
| 	"github.com/variantdev/chartify" | 	"github.com/variantdev/chartify" | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
|  | @ -19,11 +20,15 @@ func (st *HelmState) appendHelmXFlags(flags []string, release *ReleaseSpec) ([]s | ||||||
| 	return flags, nil | 	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 opts chartify.ChartifyOpts | ||||||
| 
 | 
 | ||||||
| 	var shouldRun bool | 	var shouldRun bool | ||||||
| 
 | 
 | ||||||
|  | 	opts.EnableKustomizeAlphaPlugins = true | ||||||
|  | 
 | ||||||
|  | 	opts.ChartVersion = release.Version | ||||||
|  | 
 | ||||||
| 	for _, d := range release.Dependencies { | 	for _, d := range release.Dependencies { | ||||||
| 		var dep string | 		var dep string | ||||||
| 
 | 
 | ||||||
|  | @ -52,7 +57,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char | ||||||
| 	if len(jsonPatches) > 0 { | 	if len(jsonPatches) > 0 { | ||||||
| 		generatedFiles, err := st.generateTemporaryValuesFiles(jsonPatches, release.MissingFileHandler) | 		generatedFiles, err := st.generateTemporaryValuesFiles(jsonPatches, release.MissingFileHandler) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return false, nil | 			return false, nil, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		for _, f := range generatedFiles { | 		for _, f := range generatedFiles { | ||||||
|  | @ -68,7 +73,7 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char | ||||||
| 	if len(strategicMergePatches) > 0 { | 	if len(strategicMergePatches) > 0 { | ||||||
| 		generatedFiles, err := st.generateTemporaryValuesFiles(strategicMergePatches, release.MissingFileHandler) | 		generatedFiles, err := st.generateTemporaryValuesFiles(strategicMergePatches, release.MissingFileHandler) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return false, nil | 			return false, nil, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		for _, f := range generatedFiles { | 		for _, f := range generatedFiles { | ||||||
|  | @ -80,5 +85,14 @@ func (st *HelmState) PrepareChartify(release *ReleaseSpec) (bool, *chartify.Char | ||||||
| 		shouldRun = true | 		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 { | 	type downloadResults struct { | ||||||
| 		releaseName string | 		releaseName string | ||||||
| 		chartPath   string | 		chartPath   string | ||||||
|  | 		err         error | ||||||
| 	} | 	} | ||||||
| 	errs := []error{} | 	errs := []error{} | ||||||
| 
 | 
 | ||||||
|  | @ -739,11 +740,17 @@ func PrepareCharts(helm helmexec.Interface, st *HelmState, dir string, concurren | ||||||
| 			} | 			} | ||||||
| 			close(jobQueue) | 			close(jobQueue) | ||||||
| 		}, | 		}, | ||||||
| 		func(_ int) { | 		func(workerIndex int) { | ||||||
| 			for release := range jobQueue { | 			for release := range jobQueue { | ||||||
| 				var chartPath string | 				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( | 					c := chartify.New( | ||||||
| 						chartify.HelmBin(st.DefaultHelmBinary), | 						chartify.HelmBin(st.DefaultHelmBinary), | ||||||
| 						chartify.UseHelm3(helm3), | 						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() { | 		func() { | ||||||
| 			for i := 0; i < len(st.Releases); i++ { | 			for i := 0; i < len(st.Releases); i++ { | ||||||
| 				downloadRes := <-results | 				downloadRes := <-results | ||||||
|  | 
 | ||||||
|  | 				if downloadRes.err != nil { | ||||||
|  | 					errs = append(errs, downloadRes.err) | ||||||
|  | 
 | ||||||
|  | 					return | ||||||
|  | 				} | ||||||
| 				temp[downloadRes.releaseName] = downloadRes.chartPath | 				temp[downloadRes.releaseName] = downloadRes.chartPath | ||||||
| 			} | 			} | ||||||
| 		}, | 		}, | ||||||
|  | @ -1886,12 +1899,7 @@ func (st *HelmState) generateTemporaryValuesFiles(values []interface{}, missingF | ||||||
| 	return generatedFiles, nil | 	return generatedFiles, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *ReleaseSpec, workerIndex int) ([]string, error) { | func (st *HelmState) generateVanillaValuesFiles(release *ReleaseSpec) ([]string, error) { | ||||||
| 	flags := []string{} |  | ||||||
| 	if release.Namespace != "" { |  | ||||||
| 		flags = append(flags, "--namespace", release.Namespace) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	values := []interface{}{} | 	values := []interface{}{} | ||||||
| 	for _, v := range release.Values { | 	for _, v := range release.Values { | ||||||
| 		switch typedValue := v.(type) { | 		switch typedValue := v.(type) { | ||||||
|  | @ -1918,12 +1926,14 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, f := range generatedFiles { |  | ||||||
| 		flags = append(flags, "--values", f) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	release.generatedValues = append(release.generatedValues, generatedFiles...) | 	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 { | 	for _, value := range release.Secrets { | ||||||
| 		paths, skip, err := st.storage().resolveFile(release.MissingFileHandler, "secrets", release.ValuesPathPrefix+value) | 		paths, skip, err := st.storage().resolveFile(release.MissingFileHandler, "secrets", release.ValuesPathPrefix+value) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  | @ -1944,9 +1954,45 @@ func (st *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, release *R | ||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		release.generatedValues = append(release.generatedValues, valfile) | 		generatedFiles = append(generatedFiles, valfile) | ||||||
| 		flags = append(flags, "--values", 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 { | 	if len(release.SetValues) > 0 { | ||||||
| 		for _, set := range release.SetValues { | 		for _, set := range release.SetValues { | ||||||
| 			if set.Value != "" { | 			if set.Value != "" { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue