Travis CI - 每个部署提供程序的条件'before_deploy'脚本



我正在尝试使用 Travis CI 部署到 2 个不同的提供商(npm、firebase),我的.travis.yml文件看起来像这样:

branches:
  only:
    - master
    - /vd+.d+.d+/
install:
  - yarn
before_deploy:
  # first provider
  - yarn build:storybook
  # second provider
  - yarn build:library
  - cp package.json lib/
  - cd lib
deploy:
  - provider: firebase
    ...
    on:
      branch: master
  - provider: npm
    ...
    on:
      tags: true
      all_branches: true

现在我想仅在部署到火力基地(主)时触发before_deploy内部#first provider块。

有没有办法在before_deploy里面有条件?甚至是before_deploy内部的only: -branch-name

您可以将条件指定为 bash 脚本:

before_deploy:
  # first provider
  - |
    if [[ $TRAVIS_BRANCH != $TRAVIS_PULL_REQUEST_BRANCH && $TRAVIS_BRANCH = 'master ]]; then
      yarn build:storybook
    fi
  # second provider
  - yarn build:library
  - cp package.json lib/
  - cd lib

这样做的目的是防止脚本在有人向 master 发出新的拉取请求时yarn build:storybook运行;但只有在 travis 由于推送(或任何触发构建)而构建主分支时运行。

有关更多变量,请参阅此处:https://docs.travis-ci.com/user/environment-variables/#default-environment-variables

最新更新