首页 > 解决方案 > Travis CI - 每个部署提供程序的条件“before_deploy”脚本

问题描述

我正在尝试使用 Travis CI 部署到 2 个不同的提供商(npm、firebase),我的.travis.yml文件如下所示:

branches:
  only:
    - master
    - /v\d+\.\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

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

有什么办法可以让里面有条件before_deploy吗?甚至是only: -branch-name内部before_deploy

标签: deploymentautomationcontinuous-integrationtravis-citravis-ci-api

解决方案


您可以将您的条件指定为 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

这样做是为了防止脚本yarn build:storybook在有人向 master 发出新的 pull request 时运行;但仅在主分支由于推送(或任何触发构建)由 travis 构建时运行。

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


推荐阅读