詹金斯 if 语句

Che*_*hen 7 bash jenkins

我正在尝试在 Jenkins (1.638) 的 Execute Shell 上编写一个简单的 If 语句。我查看了类似的问题 ,但它仍然不起作用(请参阅下面的结果输出)。我尝试了 [[ 和 [ 以及相关的空格,看来 Jenkins 的处理方式与常规 bash 不同。我什至在 if 和 ; 的同一行上尝试了 then。任何的想法 ?

if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
then
    ./runUnitTests.sh ${REPOSITORY_NAME} ${BASE_BUILD_CORE} ${BRANCH_NAME} ${BUILD_NUMBER} || echo "The npm may fail but the report exists"
fi
Run Code Online (Sandbox Code Playgroud)

詹金斯的结果是

  • [[升级==主]]/tmp/hudson11669113852432623.sh:2:/tmp/hudson11669113852432623.sh:[[:未找到
  • [[ 升级 == master_dev ]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: 未找到 [核心] $ /bin/sh -xe /tmp/hudson729526230219526408.

Mic*_*l J 16

你有没有考虑在你的 shell 中包含一个 bash shebang?

#!/bin/bash -xe
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
....
Run Code Online (Sandbox Code Playgroud)

这将迫使 Jenkins 使用您本地的 bash 解释器。