feat: make release version templatized (#671)

Allows the release version to be a Go template.
Resolves #669
This commit is contained in:
sgandon 2019-06-11 14:52:54 +02:00 committed by KUOKA Yusuke
parent 65d404b276
commit 11eda66eaa
2 changed files with 14 additions and 2 deletions

View File

@ -2,6 +2,7 @@ package state
import (
"fmt"
"github.com/roboll/helmfile/pkg/tmpl"
"gopkg.in/yaml.v2"
)
@ -39,6 +40,14 @@ func (r ReleaseSpec) ExecuteTemplateExpressions(renderer *tmpl.FileRenderer) (*R
}
}
{
ts := result.Version
result.Version, err = renderer.RenderTemplateContentToString([]byte(ts))
if err != nil {
return nil, fmt.Errorf("failed executing template expressions in release \"%s\".version = \"%s\": %v", r.Name, ts, err)
}
}
for i, t := range result.Values {
switch ts := t.(type) {
case string:

View File

@ -16,7 +16,7 @@ func TestHelmState_executeTemplates(t *testing.T) {
name: "Has template expressions in chart, values, and secrets",
input: ReleaseSpec{
Chart: "test-charts/{{ .Release.Name }}",
Version: "0.1",
Version: "{{ .Release.Name }}-0.1",
Verify: nil,
Name: "test-app",
Namespace: "test-namespace-{{ .Release.Name }}",
@ -25,7 +25,7 @@ func TestHelmState_executeTemplates(t *testing.T) {
},
want: ReleaseSpec{
Chart: "test-charts/test-app",
Version: "0.1",
Version: "test-app-0.1",
Verify: nil,
Name: "test-app",
Namespace: "test-namespace-test-app",
@ -71,6 +71,9 @@ func TestHelmState_executeTemplates(t *testing.T) {
if !reflect.DeepEqual(actual.Secrets, tt.want.Secrets) {
t.Errorf("expected %+v, got %+v", tt.want.Secrets, actual.Secrets)
}
if !reflect.DeepEqual(actual.Version, tt.want.Version) {
t.Errorf("expected %+v, got %+v", tt.want.Version, actual.Version)
}
})
}
}