This commit is contained in:
Martino Facchin 2017-07-24 17:23:49 +00:00 committed by GitHub
commit a55992ec33
2 changed files with 30 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"os"
"strconv"
"strings"
"sync"
@ -86,6 +87,17 @@ func (p Plugin) Exec() error {
},
}
// expand DRONE env variables in script (like DRONE_DEPLOY_TO)
for index := range p.Config.Script {
parts := strings.Split(p.Config.Script[index], " ")
for i := range parts {
if strings.Contains(parts[i], "DRONE") {
parts[i] = os.ExpandEnv(parts[i])
}
}
p.Config.Script[index] = strings.Join(parts, " ")
}
p.log(host, "commands: ", strings.Join(p.Config.Script, "\n"))
stdoutChan, stderrChan, doneChan, errChan, err := ssh.Stream(strings.Join(p.Config.Script, "\n"), p.Config.CommandTimeout)
if err != nil {

View File

@ -1,6 +1,7 @@
package main
import (
"os"
"testing"
"github.com/appleboy/easyssh-proxy"
@ -137,6 +138,23 @@ func TestStreamFromSSHCommand(t *testing.T) {
assert.Nil(t, err)
}
func TestDroneEnvSubstitution(t *testing.T) {
os.Setenv("DRONE_DEPLOY_TO", "dev")
plugin := Plugin{
Config: Config{
Host: []string{"localhost", "127.0.0.1"},
UserName: "drone-scp",
Port: 22,
KeyPath: "./tests/.ssh/id_rsa",
Script: []string{"echo $DRONE_DEPLOY_TO $PATH"},
CommandTimeout: 60,
},
}
err := plugin.Exec()
assert.Nil(t, err)
}
func TestSSHScriptWithError(t *testing.T) {
plugin := Plugin{
Config: Config{