feat: make release version templatized (#671)
Allows the release version to be a Go template. Resolves #669
This commit is contained in:
parent
65d404b276
commit
11eda66eaa
|
|
@ -2,6 +2,7 @@ package state
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/roboll/helmfile/pkg/tmpl"
|
"github.com/roboll/helmfile/pkg/tmpl"
|
||||||
"gopkg.in/yaml.v2"
|
"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 {
|
for i, t := range result.Values {
|
||||||
switch ts := t.(type) {
|
switch ts := t.(type) {
|
||||||
case string:
|
case string:
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ func TestHelmState_executeTemplates(t *testing.T) {
|
||||||
name: "Has template expressions in chart, values, and secrets",
|
name: "Has template expressions in chart, values, and secrets",
|
||||||
input: ReleaseSpec{
|
input: ReleaseSpec{
|
||||||
Chart: "test-charts/{{ .Release.Name }}",
|
Chart: "test-charts/{{ .Release.Name }}",
|
||||||
Version: "0.1",
|
Version: "{{ .Release.Name }}-0.1",
|
||||||
Verify: nil,
|
Verify: nil,
|
||||||
Name: "test-app",
|
Name: "test-app",
|
||||||
Namespace: "test-namespace-{{ .Release.Name }}",
|
Namespace: "test-namespace-{{ .Release.Name }}",
|
||||||
|
|
@ -25,7 +25,7 @@ func TestHelmState_executeTemplates(t *testing.T) {
|
||||||
},
|
},
|
||||||
want: ReleaseSpec{
|
want: ReleaseSpec{
|
||||||
Chart: "test-charts/test-app",
|
Chart: "test-charts/test-app",
|
||||||
Version: "0.1",
|
Version: "test-app-0.1",
|
||||||
Verify: nil,
|
Verify: nil,
|
||||||
Name: "test-app",
|
Name: "test-app",
|
||||||
Namespace: "test-namespace-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) {
|
if !reflect.DeepEqual(actual.Secrets, tt.want.Secrets) {
|
||||||
t.Errorf("expected %+v, got %+v", tt.want.Secrets, actual.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)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue