可以在 bitbucket 管道中使用 "if" 语句吗?
Can "if" statements be used in bitbucket pipelines?
我正在尝试 运行 下面的步骤,但它不执行 "if" 步骤(第 5 行和第 6 行)(我很确定它们应该执行,因为测试的目录不执行存在,我尝试了bash if 的多种格式,但都失败了。
有没有一种方法可以测试我正在使用的条件?
- 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}")
基本上,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
.
我正在尝试 运行 下面的步骤,但它不执行 "if" 步骤(第 5 行和第 6 行)(我很确定它们应该执行,因为测试的目录不执行存在,我尝试了bash if 的多种格式,但都失败了。 有没有一种方法可以测试我正在使用的条件?
- 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}")
基本上,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
.