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