Fix set flag are ignored when used in conjunction with jsonPatches (#867)
* Fix set flag are ignored when used in conjunction with jsonPatches Signed-off-by: xiaomudk <xiaomudk@gmail.com>
This commit is contained in:
		
							parent
							
								
									8b3ad5b793
								
							
						
					
					
						commit
						c498af3f52
					
				|  | @ -251,6 +251,7 @@ func (a *App) Template(c TemplateConfigProvider) error { | ||||||
| 			Validate:               c.Validate(), | 			Validate:               c.Validate(), | ||||||
| 			Concurrency:            c.Concurrency(), | 			Concurrency:            c.Concurrency(), | ||||||
| 			IncludeTransitiveNeeds: c.IncludeNeeds(), | 			IncludeTransitiveNeeds: c.IncludeNeeds(), | ||||||
|  | 			Set:                    c.Set(), | ||||||
| 		}, func() { | 		}, func() { | ||||||
| 			ok, errs = a.template(run, c) | 			ok, errs = a.template(run, c) | ||||||
| 		}) | 		}) | ||||||
|  |  | ||||||
|  | @ -1052,6 +1052,7 @@ type ChartPrepareOptions struct { | ||||||
| 	IncludeTransitiveNeeds bool | 	IncludeTransitiveNeeds bool | ||||||
| 	Concurrency            int | 	Concurrency            int | ||||||
| 	KubeVersion            string | 	KubeVersion            string | ||||||
|  | 	Set                    []string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type chartPrepareResult struct { | type chartPrepareResult struct { | ||||||
|  | @ -1225,6 +1226,11 @@ func (st *HelmState) PrepareCharts(helm helmexec.Interface, dir string, concurre | ||||||
| 
 | 
 | ||||||
| 					chartifyOpts.KubeVersion = release.KubeVersion | 					chartifyOpts.KubeVersion = release.KubeVersion | ||||||
| 					chartifyOpts.ApiVersions = release.ApiVersions | 					chartifyOpts.ApiVersions = release.ApiVersions | ||||||
|  | 					var flags []string | ||||||
|  | 					for _, s := range opts.Set { | ||||||
|  | 						flags = append(flags, "--set", s) | ||||||
|  | 					} | ||||||
|  | 					chartifyOpts.SetFlags = flags | ||||||
| 
 | 
 | ||||||
| 					out, err := c.Chartify(release.Name, chartPath, chartify.WithChartifyOpts(chartifyOpts)) | 					out, err := c.Chartify(release.Name, chartPath, chartify.WithChartifyOpts(chartifyOpts)) | ||||||
| 					if err != nil { | 					if err != nil { | ||||||
|  |  | ||||||
|  | @ -84,6 +84,7 @@ ${kubectl} create namespace ${test_ns} || fail "Could not create namespace ${tes | ||||||
| . ${dir}/test-cases/yaml-overwrite.sh | . ${dir}/test-cases/yaml-overwrite.sh | ||||||
| . ${dir}/test-cases/chart-needs.sh | . ${dir}/test-cases/chart-needs.sh | ||||||
| . ${dir}/test-cases/postrender.sh | . ${dir}/test-cases/postrender.sh | ||||||
|  | . ${dir}/test-cases/chartify.sh | ||||||
| 
 | 
 | ||||||
| # ALL DONE ----------------------------------------------------------------------------------------------------------- | # ALL DONE ----------------------------------------------------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,27 @@ | ||||||
|  | chartify_case_input_dir="${cases_dir}/chartify/input" | ||||||
|  | chartify_case_output_dir="${cases_dir}/chartify/output" | ||||||
|  | 
 | ||||||
|  | config_file="helmfile.yaml" | ||||||
|  | if [[ ${HELMFILE_V1MODE} = true ]]; then | ||||||
|  |   pushd "${chartify_case_input_dir}" | ||||||
|  |   mv "${config_file}" "${config_file}.gotmpl" | ||||||
|  |   config_file="${config_file}.gotmpl" | ||||||
|  |   popd | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | chartify_tmp=$(mktemp -d) | ||||||
|  | chartify_template_reverse=${chartify_tmp}/chartify.template.log | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | test_start "helmfile template with chartify" | ||||||
|  | 
 | ||||||
|  | info "Comparing template/chartify" | ||||||
|  | ${helmfile} -f ${chartify_case_input_dir}/${config_file} template > ${chartify_template_reverse} || fail "\"helmfile template\" shouldn't fail" | ||||||
|  | ./dyff between -bs ${chartify_case_output_dir}/template ${chartify_template_reverse} || fail "\"helmfile template\" should be consistent" | ||||||
|  | 
 | ||||||
|  | info "Comparing template/chartify with set" | ||||||
|  | ${helmfile} -f ${chartify_case_input_dir}/${config_file} template --set image.tag=v2 > ${chartify_template_reverse} || fail "\"helmfile template\" shouldn't fail" | ||||||
|  | ./dyff between -bs ${chartify_case_output_dir}/template-set ${chartify_template_reverse} || fail "\"helmfile template\" should be consistent" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | test_pass "helmfile template with chartify" | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | releases: | ||||||
|  |   - name: httpbin | ||||||
|  |     chart: ../../../charts/httpbin | ||||||
|  |     jsonPatches: | ||||||
|  |       - target: | ||||||
|  |           group: apps | ||||||
|  |           version: v1 | ||||||
|  |           kind: Deployment | ||||||
|  |           name: httpbin-httpbin | ||||||
|  |         patch: | ||||||
|  |           - path: "/spec/strategy/type" | ||||||
|  |             op: replace | ||||||
|  |             value: Recreate | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,61 @@ | ||||||
|  | --- | ||||||
|  | # Source: httpbin/templates/patched_resources.yaml | ||||||
|  | apiVersion: v1 | ||||||
|  | kind: Service | ||||||
|  | metadata: | ||||||
|  |   labels: | ||||||
|  |     app: httpbin | ||||||
|  |     chart: httpbin-0.1.0 | ||||||
|  |     heritage: Helm | ||||||
|  |     release: httpbin | ||||||
|  |   name: httpbin-httpbin | ||||||
|  | spec: | ||||||
|  |   ports: | ||||||
|  |   - name: httpbin | ||||||
|  |     port: 8000 | ||||||
|  |     protocol: TCP | ||||||
|  |     targetPort: 8000 | ||||||
|  |   selector: | ||||||
|  |     app: httpbin | ||||||
|  |     release: httpbin | ||||||
|  |   type: LoadBalancer | ||||||
|  | --- | ||||||
|  | # Source: httpbin/templates/patched_resources.yaml | ||||||
|  | apiVersion: apps/v1 | ||||||
|  | kind: Deployment | ||||||
|  | metadata: | ||||||
|  |   labels: | ||||||
|  |     app: httpbin | ||||||
|  |     chart: httpbin-0.1.0 | ||||||
|  |     heritage: Helm | ||||||
|  |     release: httpbin | ||||||
|  |   name: httpbin-httpbin | ||||||
|  | spec: | ||||||
|  |   replicas: 1 | ||||||
|  |   selector: | ||||||
|  |     matchLabels: | ||||||
|  |       app: httpbin | ||||||
|  |   strategy: | ||||||
|  |     type: Recreate | ||||||
|  |   template: | ||||||
|  |     metadata: | ||||||
|  |       labels: | ||||||
|  |         app: httpbin | ||||||
|  |         release: httpbin | ||||||
|  |     spec: | ||||||
|  |       containers: | ||||||
|  |       - image: docker.io/citizenstig/httpbin:latest | ||||||
|  |         imagePullPolicy: IfNotPresent | ||||||
|  |         livenessProbe: | ||||||
|  |           httpGet: | ||||||
|  |             path: / | ||||||
|  |             port: 8000 | ||||||
|  |         name: httpbin | ||||||
|  |         ports: | ||||||
|  |         - containerPort: 8000 | ||||||
|  |         readinessProbe: | ||||||
|  |           httpGet: | ||||||
|  |             path: / | ||||||
|  |             port: 8000 | ||||||
|  |         resources: {} | ||||||
|  | status: {} | ||||||
|  | @ -0,0 +1,61 @@ | ||||||
|  | --- | ||||||
|  | # Source: httpbin/templates/patched_resources.yaml | ||||||
|  | apiVersion: v1 | ||||||
|  | kind: Service | ||||||
|  | metadata: | ||||||
|  |   labels: | ||||||
|  |     app: httpbin | ||||||
|  |     chart: httpbin-0.1.0 | ||||||
|  |     heritage: Helm | ||||||
|  |     release: httpbin | ||||||
|  |   name: httpbin-httpbin | ||||||
|  | spec: | ||||||
|  |   ports: | ||||||
|  |   - name: httpbin | ||||||
|  |     port: 8000 | ||||||
|  |     protocol: TCP | ||||||
|  |     targetPort: 8000 | ||||||
|  |   selector: | ||||||
|  |     app: httpbin | ||||||
|  |     release: httpbin | ||||||
|  |   type: LoadBalancer | ||||||
|  | --- | ||||||
|  | # Source: httpbin/templates/patched_resources.yaml | ||||||
|  | apiVersion: apps/v1 | ||||||
|  | kind: Deployment | ||||||
|  | metadata: | ||||||
|  |   labels: | ||||||
|  |     app: httpbin | ||||||
|  |     chart: httpbin-0.1.0 | ||||||
|  |     heritage: Helm | ||||||
|  |     release: httpbin | ||||||
|  |   name: httpbin-httpbin | ||||||
|  | spec: | ||||||
|  |   replicas: 1 | ||||||
|  |   selector: | ||||||
|  |     matchLabels: | ||||||
|  |       app: httpbin | ||||||
|  |   strategy: | ||||||
|  |     type: Recreate | ||||||
|  |   template: | ||||||
|  |     metadata: | ||||||
|  |       labels: | ||||||
|  |         app: httpbin | ||||||
|  |         release: httpbin | ||||||
|  |     spec: | ||||||
|  |       containers: | ||||||
|  |       - image: docker.io/citizenstig/httpbin:v2 | ||||||
|  |         imagePullPolicy: IfNotPresent | ||||||
|  |         livenessProbe: | ||||||
|  |           httpGet: | ||||||
|  |             path: / | ||||||
|  |             port: 8000 | ||||||
|  |         name: httpbin | ||||||
|  |         ports: | ||||||
|  |         - containerPort: 8000 | ||||||
|  |         readinessProbe: | ||||||
|  |           httpGet: | ||||||
|  |             path: / | ||||||
|  |             port: 8000 | ||||||
|  |         resources: {} | ||||||
|  | status: {} | ||||||
		Loading…
	
		Reference in New Issue