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

标签 deployment automation continuous-integration travis-ci travis-ci-api

我正在尝试将 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

现在我想在 before_deploy 中触发 #first provider block ,只有当我部署到 firebase(master)时。

有什么方法可以在 before_deploy 中设置条件吗?或者甚至是 only: -branch-name inside before_deploy

最佳答案

您可以将条件指定为 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;但仅在 master 分支由于推送(或任何触发构建的原因)而由 travis 构建时运行。

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

关于deployment - Travis CI - 每个部署提供商的条件 'before_deploy' 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54283832/

相关文章:

javascript - 使用 npm run protractor 配置文件收到错误消息,该文件之前运行良好

java - Selenium、Java、if-else 语句无法正常工作、NoSuchElementException

powershell - VSTS - 在发布期间删除以前的部署

unit-testing - 单元测试应该放在哪里?

tomcat - 部署 war 时如何告诉tomcat冗长

asp.net - 如何修复 ASP.NET 错误 "The file ' nnn.aspx' 尚未预编译,无法请求。”?

deployment - 在 iReport 中链接子报表,以便它们也可以在 Jasper 服务器中使用

azure - 如何验证 Azure 门户上部署了我的函数和 Web api 的哪个构建版本?

javascript - 自动化 "Save as HAR with Content"

postgresql - 如何在 GitHub Actions 中连接到 Postgres