ジェンキンスifドア

ジェンキンスifドア

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インタプリタを使用します。

おすすめ記事