Jenkins(1.638)の実行シェルに単純な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
Jenkinsの結果は次のとおりです。
- [[アップグレード==マスター]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: 見つかりません
- [[アップグレード == master_dev ]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: [core] 見つかりません $ /bin/sh -xe /tmp/hudson825
ベストアンサー1
シェルにbash shebangを含めることを検討しましたか?
#!/bin/bash -xe
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
....
これにより、Jenkinsはローカルのbashインタプリタを使用します。