parent
b6d2ee9d43
commit
cfcafa2e46
|
|
@ -70,9 +70,14 @@ releases:
|
|||
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
|
||||
# single value loaded from a local file, translates to --set-file foo.config=path/to/file
|
||||
- name: foo.config
|
||||
file: path/to/file
|
||||
# set a single array value in an array, translates to --set bar[0]={1,2}
|
||||
- name: bar[0]
|
||||
values:
|
||||
- 1
|
||||
- 2
|
||||
# will attempt to decrypt it using helm-secrets plugin
|
||||
secrets:
|
||||
- vault_secret.yaml
|
||||
|
|
|
|||
|
|
@ -79,9 +79,10 @@ type ReleaseSpec struct {
|
|||
|
||||
// SetValue are the key values to set on a helm release
|
||||
type SetValue struct {
|
||||
Name string `yaml:"name"`
|
||||
Value string `yaml:"value"`
|
||||
File string `yaml:"file"`
|
||||
Name string `yaml:"name"`
|
||||
Value string `yaml:"value"`
|
||||
File string `yaml:"file"`
|
||||
Values []string `yaml:"values"`
|
||||
}
|
||||
|
||||
// CreateFromTemplateFile loads the helmfile from disk and processes the template
|
||||
|
|
@ -753,6 +754,13 @@ func (state *HelmState) namespaceAndValuesFlags(helm helmexec.Interface, basePat
|
|||
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))
|
||||
} else if len(set.Values) > 0 {
|
||||
items := make([]string, len(set.Values))
|
||||
for i, raw := range set.Values {
|
||||
items[i] = escape(raw)
|
||||
}
|
||||
v := strings.Join(items, ",")
|
||||
flags = append(flags, "--set", fmt.Sprintf("%s={%s}", escape(set.Name), v))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -708,6 +708,26 @@ func TestHelmState_SyncReleases(t *testing.T) {
|
|||
helm: &mockHelmExec{},
|
||||
wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo=FOO", "--set-file", "bar=path/to/bar", "--set", "baz=BAZ"}}},
|
||||
},
|
||||
{
|
||||
name: "set single array value in an array",
|
||||
releases: []ReleaseSpec{
|
||||
{
|
||||
Name: "releaseName",
|
||||
Chart: "foo",
|
||||
SetValues: []SetValue{
|
||||
{
|
||||
Name: "foo.bar[0]",
|
||||
Values: []string{
|
||||
"A",
|
||||
"B",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
helm: &mockHelmExec{},
|
||||
wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo.bar[0]={A,B}"}}},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue