|
@@ -14,8 +14,10 @@ import (
|
|
|
"context"
|
|
"context"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"io"
|
|
"io"
|
|
|
|
|
+ "os"
|
|
|
"os/exec"
|
|
"os/exec"
|
|
|
"runtime"
|
|
"runtime"
|
|
|
|
|
+ "strings"
|
|
|
"sync"
|
|
"sync"
|
|
|
"time"
|
|
"time"
|
|
|
)
|
|
)
|
|
@@ -352,6 +354,16 @@ func appendErrorToStderr(err error, logEntry *InternalLogEntry) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func buildEnv(req *ExecutionRequest) []string {
|
|
|
|
|
+ ret := append(os.Environ(), "OLIVETIN=1")
|
|
|
|
|
+
|
|
|
|
|
+ for k, v := range req.Arguments {
|
|
|
|
|
+ ret = append(ret, fmt.Sprintf("%v=%v", strings.ToUpper(k), v))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return ret
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func stepExec(req *ExecutionRequest) bool {
|
|
func stepExec(req *ExecutionRequest) bool {
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(req.Action.Timeout)*time.Second)
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(req.Action.Timeout)*time.Second)
|
|
|
defer cancel()
|
|
defer cancel()
|
|
@@ -360,6 +372,7 @@ func stepExec(req *ExecutionRequest) bool {
|
|
|
var stderr bytes.Buffer
|
|
var stderr bytes.Buffer
|
|
|
|
|
|
|
|
cmd := wrapCommandInShell(ctx, req.finalParsedCommand)
|
|
cmd := wrapCommandInShell(ctx, req.finalParsedCommand)
|
|
|
|
|
+ cmd.Env = buildEnv(req)
|
|
|
cmd.Stdout = &stdout
|
|
cmd.Stdout = &stdout
|
|
|
cmd.Stderr = &stderr
|
|
cmd.Stderr = &stderr
|
|
|
req.logEntry.StdoutBuffer, _ = cmd.StdoutPipe()
|
|
req.logEntry.StdoutBuffer, _ = cmd.StdoutPipe()
|