可以在位桶管道中使用“ if”语句吗?

Gas*_*cco 8 bash bitbucket bitbucket-pipelines bitbucket-cloud

我试图运行以下步骤,但它不执行“如果”步骤(第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}")
Run Code Online (Sandbox Code Playgroud)

Blu*_*ueM 9

基本上,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
Run Code Online (Sandbox Code Playgroud)

如示例中所示,对于某些命令,可能需要将行用单引号引起来(此处,仅用于演示目的),因此,如果Bb报告语法错误,则应对此进行试验。

但是:您确定您确实想要$HOME吗?默认情况下,您$BITBUCKET_CLONE_DIR不在$HOME–中,因此该curl调用将SDK下载到$BITBUCKET_CLONE_DIR