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
|
# Interpolate environment variable with a fixed string
|
||||||
domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com
|
domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com
|
||||||
scheme: {{ env "SCHEME" | default "https" }}
|
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
|
# will attempt to decrypt it using helm-secrets plugin
|
||||||
secrets:
|
secrets:
|
||||||
- vault_secret.yaml
|
- vault_secret.yaml
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ type ReleaseSpec struct {
|
||||||
type SetValue struct {
|
type SetValue struct {
|
||||||
Name string `yaml:"name"`
|
Name string `yaml:"name"`
|
||||||
Value string `yaml:"value"`
|
Value string `yaml:"value"`
|
||||||
|
File string `yaml:"file"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFromFile loads the helmfile from disk and processes the template
|
// 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)
|
flags = append(flags, "--values", valfile)
|
||||||
}
|
}
|
||||||
if len(release.SetValues) > 0 {
|
if len(release.SetValues) > 0 {
|
||||||
val := []string{}
|
|
||||||
for _, set := range release.SetValues {
|
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{},
|
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 {
|
for _, tt := range tests {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue