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