【问题标题】:Can "if" statements be used in bitbucket pipelines?可以在 bitbucket 管道中使用“if”语句吗?
【发布时间】:2017-10-06 19:06:00
【问题描述】:

我正在尝试运行以下步骤,但它不执行“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}")

【问题讨论】:

  • 添加一个 if 说 if 1=1 print hello world 什么的?我不熟悉 bitbucket,但尝试类似的方法可能会起作用

标签: bash bitbucket bitbucket-pipelines bitbucket-cloud


【解决方案1】:

基本上,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

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2020-12-28
    • 2011-08-14
    • 1970-01-01
    • 2020-07-31
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多