feat: add chart version to template values
Signed-off-by: Hans Song <hans.song.dev@gmail.com>
This commit is contained in:
		
							parent
							
								
									3429901363
								
							
						
					
					
						commit
						b308476477
					
				| 
						 | 
					@ -30,6 +30,7 @@ func (st *HelmState) createReleaseTemplateData(release *ReleaseSpec, vals map[st
 | 
				
			||||||
		Release: releaseTemplateDataRelease{
 | 
							Release: releaseTemplateDataRelease{
 | 
				
			||||||
			Name:         release.Name,
 | 
								Name:         release.Name,
 | 
				
			||||||
			Chart:        release.Chart,
 | 
								Chart:        release.Chart,
 | 
				
			||||||
 | 
								ChartVersion: release.Version,
 | 
				
			||||||
			Namespace:    release.Namespace,
 | 
								Namespace:    release.Namespace,
 | 
				
			||||||
			Labels:       release.Labels,
 | 
								Labels:       release.Labels,
 | 
				
			||||||
			KubeContext:  release.KubeContext,
 | 
								KubeContext:  release.KubeContext,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,7 @@ import (
 | 
				
			||||||
	"github.com/go-test/deep"
 | 
						"github.com/go-test/deep"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/environment"
 | 
						"github.com/helmfile/helmfile/pkg/environment"
 | 
				
			||||||
 | 
						"github.com/helmfile/helmfile/pkg/event"
 | 
				
			||||||
	"github.com/helmfile/helmfile/pkg/filesystem"
 | 
						"github.com/helmfile/helmfile/pkg/filesystem"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -146,6 +147,41 @@ func TestHelmState_executeTemplates(t *testing.T) {
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name: "Has template expressions in hook args",
 | 
				
			||||||
 | 
								input: ReleaseSpec{
 | 
				
			||||||
 | 
									Name:    "test-name",
 | 
				
			||||||
 | 
									Chart:   "test-chart",
 | 
				
			||||||
 | 
									Version: "{{ .Release.Name }}-0.1.0",
 | 
				
			||||||
 | 
									Hooks: []event.Hook{{
 | 
				
			||||||
 | 
										Name:    "test-hook",
 | 
				
			||||||
 | 
										Command: "helm",
 | 
				
			||||||
 | 
										Args: []string{
 | 
				
			||||||
 | 
											"show",
 | 
				
			||||||
 | 
											"crds",
 | 
				
			||||||
 | 
											"{{ .Release.Chart }}",
 | 
				
			||||||
 | 
											"--version",
 | 
				
			||||||
 | 
											"{{ .Release.ChartVersion }}",
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									}},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								want: ReleaseSpec{
 | 
				
			||||||
 | 
									Name:    "test-name",
 | 
				
			||||||
 | 
									Chart:   "test-chart",
 | 
				
			||||||
 | 
									Version: "test-name-0.1.0",
 | 
				
			||||||
 | 
									Hooks: []event.Hook{{
 | 
				
			||||||
 | 
										Name:    "test-hook",
 | 
				
			||||||
 | 
										Command: "helm",
 | 
				
			||||||
 | 
										Args: []string{
 | 
				
			||||||
 | 
											"show",
 | 
				
			||||||
 | 
											"crds",
 | 
				
			||||||
 | 
											"test-chart",
 | 
				
			||||||
 | 
											"--version",
 | 
				
			||||||
 | 
											"0.1.0",
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									}},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := range tests {
 | 
						for i := range tests {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,11 +16,11 @@ type EnvironmentTemplateData struct {
 | 
				
			||||||
	// Namespace is accessible as `.Namespace` from any non-values template executed by the renderer
 | 
						// Namespace is accessible as `.Namespace` from any non-values template executed by the renderer
 | 
				
			||||||
	Namespace string
 | 
						Namespace string
 | 
				
			||||||
	// Values is accessible as `.Values` and it contains default state values overrode by environment values and override values.
 | 
						// Values is accessible as `.Values` and it contains default state values overrode by environment values and override values.
 | 
				
			||||||
	Values      map[string]any
 | 
						Values      map[string]interface{}
 | 
				
			||||||
	StateValues *map[string]any
 | 
						StateValues *map[string]interface{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewEnvironmentTemplateData(environment environment.Environment, namespace string, values map[string]any) *EnvironmentTemplateData {
 | 
					func NewEnvironmentTemplateData(environment environment.Environment, namespace string, values map[string]interface{}) *EnvironmentTemplateData {
 | 
				
			||||||
	d := EnvironmentTemplateData{environment, namespace, values, nil}
 | 
						d := EnvironmentTemplateData{environment, namespace, values, nil}
 | 
				
			||||||
	d.StateValues = &d.Values
 | 
						d.StateValues = &d.Values
 | 
				
			||||||
	return &d
 | 
						return &d
 | 
				
			||||||
| 
						 | 
					@ -35,8 +35,8 @@ type releaseTemplateData struct {
 | 
				
			||||||
	// It contains a subset of ReleaseSpec that is known to be useful to dynamically render values.
 | 
						// It contains a subset of ReleaseSpec that is known to be useful to dynamically render values.
 | 
				
			||||||
	Release releaseTemplateDataRelease
 | 
						Release releaseTemplateDataRelease
 | 
				
			||||||
	// Values is accessible as `.Values` and it contains default state values overrode by environment values and override values.
 | 
						// Values is accessible as `.Values` and it contains default state values overrode by environment values and override values.
 | 
				
			||||||
	Values      map[string]any
 | 
						Values      map[string]interface{}
 | 
				
			||||||
	StateValues *map[string]any
 | 
						StateValues *map[string]interface{}
 | 
				
			||||||
	// KubeContext is HelmState.OverrideKubeContext.
 | 
						// KubeContext is HelmState.OverrideKubeContext.
 | 
				
			||||||
	// You should better use Release.KubeContext as it might work as you'd expect even if HelmState.OverrideKubeContext is not set.
 | 
						// You should better use Release.KubeContext as it might work as you'd expect even if HelmState.OverrideKubeContext is not set.
 | 
				
			||||||
	// See releaseTemplateDataRelease.KubeContext for more information.
 | 
						// See releaseTemplateDataRelease.KubeContext for more information.
 | 
				
			||||||
| 
						 | 
					@ -64,6 +64,9 @@ type releaseTemplateDataRelease struct {
 | 
				
			||||||
	// Chart is ReleaseSpec.Chart
 | 
						// Chart is ReleaseSpec.Chart
 | 
				
			||||||
	Chart string
 | 
						Chart string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ChartVersion is ReleaseSpec.Version, renamed to disambiguate from the templated version field
 | 
				
			||||||
 | 
						ChartVersion string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// KubeContext is ReleaseSpec.KubeContext
 | 
						// KubeContext is ReleaseSpec.KubeContext
 | 
				
			||||||
	KubeContext string
 | 
						KubeContext string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue