mirror of
https://github.com/ipedrazas/drone-helm.git
synced 2026-06-26 15:52:33 +08:00
recatored data entry
This commit is contained in:
@@ -2,18 +2,25 @@
|
||||
|
||||
This plugin allows to deploy a [Helm](https://github.com/kubernetes/helm) chart into a [Kubernetes](https://github.com/kubernetes/kubernetes) cluster.
|
||||
|
||||
For example, this configuration will deploy Jenkins using the [stable/jenkins chart](https://github.com/kubernetes/charts/tree/master/stable/jenkins)
|
||||
For example, this configuration will deploy my-app using the [stable/jenkins chart](https://github.com/kubernetes/charts/tree/master/stable/jenkins)
|
||||
|
||||
|
||||
pipeline:
|
||||
deploy:
|
||||
image: quay.io/ipedrazas/drone-helm
|
||||
helm_command: "install --name my-release stable/jenkins --debug --dry-run"
|
||||
api_server: "http://my_api_server"
|
||||
kubernetes_token: "secret token"
|
||||
skip_tls_verify: true
|
||||
helm_deploy:
|
||||
image: quay.io/ipedrazas/drone-helm
|
||||
chart: stable/jenkins
|
||||
release: my-dear-jenkins
|
||||
|
||||
There are two secrets you have to create:
|
||||
|
||||
drone secret add --image=quay.io/ipedrazas/drone-helm \
|
||||
your-user/your-repo API_SERVER https://mykubernetesapiserver
|
||||
|
||||
|
||||
drone secret add --image=quay.io/ipedrazas/drone-helm \
|
||||
your-user/your-repo KUBERNETES_TOKEN eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJ...
|
||||
|
||||
|
||||
If you don't know where to get a token from, you can execute the following command:
|
||||
|
||||
kubectl exec POD_NAME -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
@@ -29,12 +36,11 @@ To test the plugin, you can run `minikube` and just run the docker image as foll
|
||||
docker run --rm \
|
||||
-e PLUGIN_HELM_COMMAND="install --name my-release stable/jenkins --debug --dry-run" \
|
||||
-e PLUGIN_API_SERVER=https://192.168.64.5:8443 \
|
||||
-e PLUGIN_TOKEN="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tcnloeTciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjU5ZWQzYjM1LWI0MmUtMTFlNi05ZDI3LTFlZGZkMzA0MTNhNiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.aGX19xTFJdxC6d5hObKUms9Kaq0wR8fMypXTnsfjC6XjiA3_QWX9LJdRFl6wvZTRoIAjuOhAJKNAKhLQ3sK0aKrddNxn2is-HCb88BXma3BrHWOtkwajvZ1dyAhZOe2fY1I77t_mrbvTMqJ4udsom6roHf-KL8j29DJWsV0nFh6VKyvqN8f7FsNG3WuH3SFZX_LfcE0HfZxrDaVEi-CkDo0sGCqIefDk2sn4IQD6b1Ng-grJWSN-YtrcDDduEKlUHPSRMmMtWa3-Q61-yQqlyqATGbxC3UwqwaLfjCrTkg1Uikv4jWDP3-eNmuQCqG9PHKulA1riTFAgxbr09zoYxg" \
|
||||
-e PLUGIN_TOKEN="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ld..." \
|
||||
-e PLUGIN_NAMESPACE=default \
|
||||
-e PLUGIN_SKIP_TLS_VERIFY=true \
|
||||
quay.io/ipedrazas/drone-helm
|
||||
|
||||
|
||||
|
||||
|
||||
Happy Helming!
|
||||
@@ -21,27 +21,42 @@ func main() {
|
||||
cli.StringSliceFlag{
|
||||
Name: "helm_command",
|
||||
Usage: "add the command Helm has to execute",
|
||||
EnvVar: "PLUGIN_HELM_COMMAND",
|
||||
EnvVar: "PLUGIN_HELM_COMMAND,HELM_COMMAND",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "api_server",
|
||||
Usage: "Api Server url",
|
||||
EnvVar: "PLUGIN_API_SERVER",
|
||||
EnvVar: "PLUGIN_API_SERVER,API_SERVER",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "token",
|
||||
Usage: "Kubernetes Token",
|
||||
EnvVar: "PLUGIN_TOKEN",
|
||||
EnvVar: "PLUGIN_TOKEN,KUBERNETES_TOKEN",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "namespace",
|
||||
Usage: "Kubernetes namespace",
|
||||
EnvVar: "PLUGIN_NAMESPACE",
|
||||
EnvVar: "PLUGIN_NAMESPACE,NAMESPACE",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "release",
|
||||
Usage: "Kubernetes helm release",
|
||||
EnvVar: "PLUGIN_RELEASE,RELEASE",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "chart",
|
||||
Usage: "Kubernetes helm release",
|
||||
EnvVar: "PLUGIN_CHART,CHART",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "values",
|
||||
Usage: "Kubernetes helm release",
|
||||
EnvVar: "PLUGIN_VALUES,VALUES",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "skip_tls_verify",
|
||||
Usage: "Skip TLS verification",
|
||||
EnvVar: "PLUGIN_SKIP_TLS_VERIFY",
|
||||
EnvVar: "PLUGIN_SKIP_TLS_VERIFY,SKIP_TLS_VERIFY",
|
||||
},
|
||||
}
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
@@ -60,7 +75,17 @@ func run(c *cli.Context) error {
|
||||
HelmCommand: c.StringSlice("helm_command"),
|
||||
Namespace: c.String("namespace"),
|
||||
SkipTLSVerify: c.Bool("skip_tls_verify"),
|
||||
Values: c.String("values"),
|
||||
Release: c.String("release"),
|
||||
Chart: c.String("chart"),
|
||||
},
|
||||
}
|
||||
debug()
|
||||
return plugin.Exec()
|
||||
}
|
||||
|
||||
func debug() {
|
||||
for _, e := range os.Environ() {
|
||||
fmt.Println(e)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@ type (
|
||||
HelmCommand []string `json:"helm_command"`
|
||||
SkipTLSVerify bool `json:"tls_skip_verify"`
|
||||
Namespace string `json:"namespace"`
|
||||
Release string `json:"release"`
|
||||
Chart string `json:"chart"`
|
||||
Values string `json:"values"`
|
||||
}
|
||||
// Plugin default
|
||||
Plugin struct {
|
||||
@@ -44,16 +47,25 @@ func (p Plugin) Exec() error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error running helm comand: " + strings.Join(init[:], " "))
|
||||
}
|
||||
cmd := p.Config.HelmCommand
|
||||
err = runCommand(cmd)
|
||||
upgrade := make([]string, 7)
|
||||
upgrade[0] = "upgrade"
|
||||
upgrade[1] = "--install"
|
||||
upgrade[2] = p.Config.Release
|
||||
upgrade[3] = p.Config.Chart
|
||||
upgrade[4] = "--debug"
|
||||
if p.Config.Values != "" {
|
||||
upgrade[5] = "--set"
|
||||
upgrade[6] = p.Config.Values
|
||||
}
|
||||
|
||||
err = runCommand(upgrade)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error running helm comand: " + strings.Join(cmd[:], " "))
|
||||
return fmt.Errorf("Error running helm comand: " + strings.Join(upgrade[:], " "))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func initialiseKubeconfig(params *Config, source string, target string) error {
|
||||
fmt.Println(params)
|
||||
t, _ := template.ParseFiles(source)
|
||||
f, err := os.Create(target)
|
||||
err = t.Execute(f, params)
|
||||
|
||||
Reference in New Issue
Block a user