Jenkins运行脚本文件

时间:2018-09-06 16:32:03

标签: bash jenkins

我有一个运行脚本文件的Jenkins Pipeline。

我已经在Jenkins之外测试了脚本,并且脚本运行完美,但是当我尝试将其作为管道的一部分运行时,出现以下错误:

/maint/git-branches.sh: line 2: syntax error: unexpected "("

脚本为:

#!/bin/bash
branches=()
eval "$(git for-each-ref --shell --format='branches+=(%(refname))' refs/heads/)"
for branch in "${branches[@]}"; do
   echo "${branch##*/}"
done

我的准备阶段是:

stage ('Fetching Branches') {
          steps {
            script {
              def branchcollection = sh (script: "sh maint/git-branches.sh", returnStdout: true).trim()
              BRANCH = input message: 'Choose branch to pull from', ok: 'Ok', parameters: [choice(name: 'BRANCH', choices: "${branchCollection}", description: '')]
            }
          }
        }

所有')'括号都匹配,因此在任何地方都不会出现松散的括号。

1 个答案:

答案 0 :(得分:0)

管道代码正在git-branches.sh中显式运行sh。在某些系统上,sh不是Bash,并且不支持Bash特定的功能。在这种情况下,sh似乎不支持数组。尝试将管道代码修改为... "bash maint/git-branches.sh"...