commit
2121fe57b2
|
|
@ -70,9 +70,14 @@ releases:
|
||||||
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:
|
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
|
- name: foo.config
|
||||||
file: path/to/file
|
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
|
# will attempt to decrypt it using helm-secrets plugin
|
||||||
secrets:
|
secrets:
|
||||||
- vault_secret.yaml
|
- vault_secret.yaml
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ type SetValue struct {
|
||||||
Name string `yaml:"name"`
|
Name string `yaml:"name"`
|
||||||
Value string `yaml:"value"`
|
Value string `yaml:"value"`
|
||||||
File string `yaml:"file"`
|
File string `yaml:"file"`
|
||||||
|
Values []string `yaml:"values"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFromTemplateFile loads the helmfile from disk and processes the template
|
// 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)))
|
flags = append(flags, "--set", fmt.Sprintf("%s=%s", escape(set.Name), escape(set.Value)))
|
||||||
} else if set.File != "" {
|
} else if set.File != "" {
|
||||||
flags = append(flags, "--set-file", fmt.Sprintf("%s=%s", escape(set.Name), 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{},
|
helm: &mockHelmExec{},
|
||||||
wantReleases: []mockRelease{{"releaseName", []string{"--set", "foo=FOO", "--set-file", "bar=path/to/bar", "--set", "baz=BAZ"}}},
|
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 {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue