web-dev-qa-db-ja.com

「if」ステートメントをビットバケットパイプラインで使用できますか?

次のステップを実行しようとしていますが、「if」ステップ(5行目と6行目)が実行されません(テストされたディレクトリが存在しないため、実行する必要があると確信しています。複数の形式のbashを試してみました。しかし、それらはすべて失敗します。私が使用している条件以外の条件をテストする方法はありますか?

   - step:
      name: Google Cloud SDK Installation
      caches:
        - pip
        - cloudsdk
      script:
        - export ENV=dev
        - source scripts/setenv.sh
        - export CLOUDSDK_CORE_DISABLE_PROMPTS=1
        - SDK_FILENAME=google-cloud-sdk-$SDK_VERSION-linux-x86_64.tar.gz
        - if [ ! -e ${HOME}/google-cloud-sdk ] ; then `curl -O -J https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/${SDK_FILENAME}`; fi
        - if [ ! -e ${HOME}/google-cloud-sdk ] ; then `tar -zxvf ${SDK_FILENAME} --directory ${HOME}`; fi
        - export PATH=${PATH}:${HOME}/google-cloud-sdk/bin
        - GAE_PYTHONPATH=${HOME}/google_appengine
        - export PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH}
        - python scripts/fetch_gae_sdk.py $(dirname "${GAE_PYTHONPATH}")
10
Gaston Pisacco

基本的に、Bb Pipelinesは、-eを使用したファイルチェックや比較など、条件をサポートします。たとえば、これらの行はすべて機能します。

script:
  - '[ ! -e "$BITBUCKET_CLONE_DIR/missing.txt" ] && echo "File does not exist"'
  - 'if [ ! -e "$BITBUCKET_CLONE_DIR/missing.txt" ]; then echo "File does not exist"; fi'
  - if [ ! -e "$BITBUCKET_CLONE_DIR/missing.txt" ]; then echo "File does not exist"; fi

例に示されているように、一部のコマンドでは、行を一重引用符で囲む必要がある場合があるため(ここでは、デモンストレーション目的のみ)、Bbが構文エラーを報告した場合は、それを試してみてください。

しかし:本当に$HOMEが必要ですか?デフォルトでは、$BITBUCKET_CLONE_DIRではなく$HOMEにいるため、curl呼び出しはSDKを$BITBUCKET_CLONE_DIRにダウンロードします。

11
BlueM