Skip to content

Commit a8c6a2d

Browse files
committed
support shebang in shell script
Signed-off-by: Patrick Zhao <zhaoyu@koderover.com>
1 parent dde458a commit a8c6a2d

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

pkg/microservice/aslan/core/workflow/service/workflow/controller/job/job_build.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,10 +548,16 @@ func (j BuildJobController) ToTask(taskID int64) ([]*commonmodels.JobTask, error
548548
// init shell step
549549
scripts := []string{}
550550
dockerLoginCmd := `docker login -u "$DOCKER_REGISTRY_AK" -p "$DOCKER_REGISTRY_SK" "$DOCKER_REGISTRY_HOST" &> /dev/null`
551+
552+
if !strings.HasPrefix(buildInfo.Scripts, "#!") {
553+
buildInfo.Scripts = "#!/bin/bash\n" + buildInfo.Scripts
554+
}
555+
551556
if jobTask.Infrastructure == setting.JobVMInfrastructure {
552557
scripts = append(scripts, strings.Split(replaceWrapLine(buildInfo.Scripts), "\n")...)
553558
} else {
554-
scripts = append([]string{dockerLoginCmd}, strings.Split(replaceWrapLine(buildInfo.Scripts), "\n")...)
559+
scripts := strings.Split(replaceWrapLine(buildInfo.Scripts), "\n")
560+
scripts = append(scripts[:1], append([]string{dockerLoginCmd}, scripts[1:]...)...)
555561
scripts = append(scripts, outputScript(outputs, jobTask.Infrastructure)...)
556562
}
557563
scriptStep := &commonmodels.StepTask{

pkg/microservice/jobexecutor/core/service/step/step_shell.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"os"
2424
"os/exec"
2525
"path/filepath"
26+
"runtime"
2627
"strings"
2728
"sync"
2829
"time"
@@ -80,14 +81,20 @@ func (s *ShellStep) Run(ctx context.Context) error {
8081
if !s.spec.SkipPrepare {
8182
scripts = prepareScriptsEnv()
8283
}
83-
scripts = append(scripts, s.spec.Scripts...)
84+
scripts = append(s.spec.Scripts[:1], append(scripts, s.spec.Scripts[1:]...)...)
8485

8586
userScriptFile := "user_script.sh"
8687
if err := ioutil.WriteFile(filepath.Join(os.TempDir(), userScriptFile), []byte(strings.Join(scripts, "\n")), 0700); err != nil {
8788
return fmt.Errorf("write script file error: %v", err)
8889
}
8990

90-
cmd := exec.Command("/bin/bash", filepath.Join(os.TempDir(), userScriptFile))
91+
var cmd *exec.Cmd
92+
if runtime.GOOS == "windows" {
93+
cmd = exec.Command("/bin/bash", filepath.Join(os.TempDir(), userScriptFile))
94+
} else {
95+
cmd = exec.Command(filepath.Join(os.TempDir(), userScriptFile))
96+
}
97+
9198
cmd.Dir = s.workspace
9299
cmd.Env = s.envs
93100

0 commit comments

Comments
 (0)