Skip to content

Commit

Permalink
Merge pull request roboll#228 from mumoshu/set-file
Browse files Browse the repository at this point in the history
feat: Support for helm's --set-file
  • Loading branch information
mumoshu authored Aug 24, 2018
2 parents 96d0781 + 48e6579 commit 45d0f1c
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 6 additions & 3 deletions state/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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, ","))
}

/***********
Expand Down
27 changes: 26 additions & 1 deletion state/state_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 45d0f1c

Please sign in to comment.