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