diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..661d40b --- /dev/null +++ b/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +export GOOS=linux +export GOARCH=386 +go build +docker build -t drone-helm . diff --git a/main.go b/main.go index 8aec948..d086da1 100644 --- a/main.go +++ b/main.go @@ -43,6 +43,11 @@ func main() { Usage: "Kubernetes helm release", EnvVar: "PLUGIN_VALUES,VALUES", }, + cli.StringFlag{ + Name: "values_files", + Usage: "Helm values override files", + EnvVar: "PLUGIN_VALUES_FILES,VALUES_FILES", + }, cli.BoolFlag{ Name: "skip_tls_verify", Usage: "Skip TLS verification", @@ -86,13 +91,14 @@ func run(c *cli.Context) error { Namespace: c.String("namespace"), SkipTLSVerify: c.Bool("skip_tls_verify"), Values: c.String("values"), + ValuesFiles: c.String("values_files"), Release: c.String("release"), Chart: c.String("chart"), Debug: c.Bool("debug"), DryRun: c.Bool("dry-run"), Secrets: c.StringSlice("secrets"), Prefix: c.String("prefix"), - TillerNs: c.String("tiller_ns"), + TillerNs: c.String("tiller-ns"), }, } resolveSecrets(&plugin) diff --git a/plugin.go b/plugin.go index f0bc4c0..e6dafb6 100644 --- a/plugin.go +++ b/plugin.go @@ -26,6 +26,7 @@ type ( Release string `json:"release"` Chart string `json:"chart"` Values string `json:"values"` + ValuesFiles string `json:"values_files"` Debug bool `json:"debug"` DryRun bool `json:"dry_run"` Secrets []string `json:"secrets"` @@ -62,6 +63,12 @@ func setPushEventCommand(p *Plugin) { upgrade = append(upgrade, "--set") upgrade = append(upgrade, p.Config.Values) } + if p.Config.ValuesFiles != "" { + for _, valuesFile := range strings.Split(p.Config.ValuesFiles, ",") { + upgrade = append(upgrade, "--values") + upgrade = append(upgrade, valuesFile) + } + } if p.Config.Namespace != "" { upgrade = append(upgrade, "--namespace") upgrade = append(upgrade, p.Config.Namespace) @@ -118,7 +125,7 @@ func (p *Plugin) Exec() error { init := doHelmInit(p) err := runCommand(init) if err != nil { - return fmt.Errorf("Error running helm comand: " + strings.Join(init[:], " ")) + return fmt.Errorf("Error running helm command: " + strings.Join(init[:], " ")) } setHelmCommand(p) @@ -127,7 +134,7 @@ func (p *Plugin) Exec() error { } err = runCommand(p.Config.HelmCommand) if err != nil { - return fmt.Errorf("Error running helm comand: " + strings.Join(p.Config.HelmCommand[:], " ")) + return fmt.Errorf("Error running helm command: " + strings.Join(p.Config.HelmCommand[:], " ")) } return nil } @@ -193,7 +200,8 @@ func (p *Plugin) debug() { // debug plugin obj fmt.Printf("Api server: %s \n", p.Config.APIServer) fmt.Printf("Values: %s \n", p.Config.Values) - fmt.Printf("Values: %s \n", p.Config.Secrets) + fmt.Printf("Secrets: %s \n", p.Config.Secrets) + fmt.Printf("ValuesFiles: %s \n", p.Config.ValuesFiles) kubeconfig, err := ioutil.ReadFile(KUBECONFIG) if err == nil {