recatored data entry

This commit is contained in:
Ivan Pedrazas
2016-12-09 18:49:38 +00:00
parent 9ee726bcc7
commit d3898beef4
3 changed files with 61 additions and 18 deletions
+15 -9
View File
@@ -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!
+30 -5
View File
@@ -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)
}
}
+16 -4
View File
@@ -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)