diff --git a/main.go b/main.go index 033cdc3..170028f 100644 --- a/main.go +++ b/main.go @@ -35,9 +35,14 @@ func main() { }, cli.StringFlag{ Name: "chart", - Usage: "Kubernetes helm release", + Usage: "Kubernetes helm chart name", EnvVar: "PLUGIN_CHART,CHART", }, + cli.StringFlag{ + Name: "version", + Usage: "specify the exact chart version to use. If this is not specified, the latest version is used", + EnvVar: "PLUGIN_VERSION,VERSION", + }, cli.StringFlag{ Name: "values", Usage: "Kubernetes helm release", @@ -134,6 +139,7 @@ func run(c *cli.Context) error { ValuesFiles: c.String("values_files"), Release: c.String("release"), Chart: c.String("chart"), + Version: c.String("version"), Debug: c.Bool("debug"), DryRun: c.Bool("dry-run"), Secrets: c.StringSlice("secrets"), diff --git a/plugin.go b/plugin.go index dc4e2b5..0e6264a 100644 --- a/plugin.go +++ b/plugin.go @@ -26,6 +26,7 @@ type ( Namespace string `json:"namespace"` Release string `json:"release"` Chart string `json:"chart"` + Version string `json:"version"` Values string `json:"values"` ValuesFiles string `json:"values_files"` Debug bool `json:"debug"` @@ -68,6 +69,10 @@ func setPushEventCommand(p *Plugin) { upgrade = append(upgrade, p.Config.Release) } upgrade = append(upgrade, p.Config.Chart) + if p.Config.Version != "" { + upgrade = append(upgrade, "--version") + upgrade = append(upgrade, p.Config.Version) + } if p.Config.Values != "" { upgrade = append(upgrade, "--set") upgrade = append(upgrade, p.Config.Values) diff --git a/plugin_test.go b/plugin_test.go index c844333..97f7fe7 100644 --- a/plugin_test.go +++ b/plugin_test.go @@ -52,6 +52,7 @@ func TestGetHelmCommand(t *testing.T) { Debug: true, DryRun: true, Chart: "./chart/test", + Version: "1.2.3", Release: "test-release", Values: "image.tag=v.0.1.0,nameOverride=my-over-app", Wait: true, @@ -62,7 +63,7 @@ func TestGetHelmCommand(t *testing.T) { } setHelmCommand(plugin) res := strings.Join(plugin.Config.HelmCommand[:], " ") - expected := "upgrade --install test-release ./chart/test --set image.tag=v.0.1.0,nameOverride=my-over-app --namespace default --dry-run --debug --wait --reuse-values --timeout 500 --force" + expected := "upgrade --install test-release ./chart/test --version 1.2.3 --set image.tag=v.0.1.0,nameOverride=my-over-app --namespace default --dry-run --debug --wait --reuse-values --timeout 500 --force" if res != expected { t.Errorf("Result is %s and we expected %s", res, expected) }