Merge pull request #228 from mumoshu/set-file
feat: Support for helm's --set-file
This commit is contained in:
		
						commit
						45d0f1c8e4
					
				|  | @ -69,6 +69,10 @@ releases: | |||
|           # Interpolate environment variable with a fixed string | ||||
|           domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com | ||||
|           scheme: {{ env "SCHEME" | default "https" }} | ||||
|     set: | ||||
|     # single value load from a local file, --set-file foo.config=path/to/file | ||||
|     - name: foo.config | ||||
|       file: path/to/file | ||||
|     # will attempt to decrypt it using helm-secrets plugin | ||||
|     secrets: | ||||
|       - vault_secret.yaml | ||||
|  |  | |||
|  | @ -81,6 +81,7 @@ type ReleaseSpec struct { | |||
| type SetValue struct { | ||||
| 	Name  string `yaml:"name"` | ||||
| 	Value string `yaml:"value"` | ||||
| 	File  string `yaml:"file"` | ||||
| } | ||||
| 
 | ||||
| // CreateFromFile loads the helmfile from disk and processes the template
 | ||||
|  | @ -757,11 +758,13 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, basePat | |||
| 		flags = append(flags, "--values", valfile) | ||||
| 	} | ||||
| 	if len(release.SetValues) > 0 { | ||||
| 		val := []string{} | ||||
| 		for _, set := range release.SetValues { | ||||
| 			val = append(val, fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value))) | ||||
| 			if set.Value != "" { | ||||
| 				flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value))) | ||||
| 			} else if set.File != "" { | ||||
| 				flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), set.File)) | ||||
| 			} | ||||
| 		} | ||||
| 		flags = append(flags, "--set", strings.Join(val, ",")) | ||||
| 	} | ||||
| 
 | ||||
| 	/*********** | ||||
|  |  | |||
|  | @ -704,7 +704,32 @@ func TestHelmState_SyncReleases(t *testing.T) { | |||
| 				}, | ||||
| 			}, | ||||
| 			helm:         &mockHelmExec{}, | ||||
| 			wantReleases: []mockRelease{{"releaseName", []string{"--set", "someList=a\\,b\\,c,json=\\{\"name\": \"john\"\\}"}}}, | ||||
| 			wantReleases: []mockRelease{{"releaseName", []string{"--set", "someList=a\\,b\\,c", "--set", "json=\\{\"name\": \"john\"\\}"}}}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "set single value from file", | ||||
| 			releases: []ReleaseSpec{ | ||||
| 				{ | ||||
| 					Name:  "releaseName", | ||||
| 					Chart: "foo", | ||||
| 					SetValues: []SetValue{ | ||||
| 						{ | ||||
| 							Name:  "foo", | ||||
| 							Value: "FOO", | ||||
| 						}, | ||||
| 						{ | ||||
| 							Name: "bar", | ||||
| 							File: "path/to/bar", | ||||
| 						}, | ||||
| 						{ | ||||
| 							Name:  "baz", | ||||
| 							Value: "BAZ", | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			helm:         &mockHelmExec{}, | ||||
| 			wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo=FOO", "--set-file", "bar=path/to/bar", "--set", "baz=BAZ"}}}, | ||||
| 		}, | ||||
| 	} | ||||
| 	for _, tt := range tests { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue