fixed multiple keys with secrets

This commit is contained in:
Ivan Pedrazas
2016-12-14 11:14:49 +00:00
parent d62a7695ee
commit 2c3e34f7f3
3 changed files with 24 additions and 9 deletions
+3 -2
View File
@@ -66,8 +66,9 @@ Then you have to define values as
image: quay.io/ipedrazas/drone-helm
chart: stable/jenkins
release: my-dear-jenkins
values: webhook.token=MYSECRET
secrets: MYSECRET
values: webhook.token=${MYSECRET},webhook.key=$KEY
api_server: ${STAGING_API_SERVER}
secrets: MYSECRET,STAGING_API_SERVER,KEY
You have to do this because from 0.5 version fo Drone, secrets are not expanded in plugins. This means that there's
no possibility of passing secret parameters as part of a value to the plugin.
+15 -4
View File
@@ -105,10 +105,21 @@ func runCommand(params []string) error {
func resolveSecrets(p *Plugin) {
if len(p.Config.Secrets) > 0 {
for _, secret := range p.Config.Secrets {
if strings.Contains(p.Config.Values, secret) {
envval := os.Getenv(secret)
p.Config.Values = strings.Replace(p.Config.Values, secret, envval, -1)
}
envval := os.Getenv(secret)
p.Config.Values = resolveEnvVar(p.Config.Values, secret, envval)
p.Config.APIServer = resolveEnvVar(p.Config.APIServer, secret, envval)
}
}
}
// this functions checks if $VAR or ${VAR} exists and
// returns the text with resolved vars
func resolveEnvVar(key string, envvar string, envval string) string {
if strings.Contains(key, "$"+envvar) {
key = strings.Replace(key, "$"+envvar, envval, -1)
}
if strings.Contains(key, "${"+envvar+"}") {
key = strings.Replace(key, "${"+envvar+"}", envval, -1)
}
return key
}
+6 -3
View File
@@ -74,7 +74,7 @@ func TestResolveSecrets(t *testing.T) {
plugin := &Plugin{
Config: Config{
APIServer: "http://myapiserver",
APIServer: "${API_SERVER}",
Token: "secret-token",
HelmCommand: nil,
Namespace: "default",
@@ -83,7 +83,7 @@ func TestResolveSecrets(t *testing.T) {
DryRun: true,
Chart: "./chart/test",
Release: "test-release",
Values: "image.tag=TAG,api=API_SERVER,nameOverride=my-over-app,second.tag=TAG",
Values: "image.tag=$TAG,api=${API_SERVER},nameOverride=my-over-app,second.tag=${TAG}",
Secrets: secrets,
},
}
@@ -101,5 +101,8 @@ func TestResolveSecrets(t *testing.T) {
if strings.Contains(plugin.Config.Values, secrets[1]) {
t.Errorf("env var %s not resolved %s", secrets[1], api)
}
// // test that the subsitution works with more than one envvar
if strings.Contains(plugin.Config.APIServer, secrets[1]) {
t.Errorf("env var %s not resolved %s", secrets[1], api)
}
}