在我的travis脚本中,我有以下内容:
after_success:
- ember build --environment=production
- ember build --environment=staging --output-path=dist-staging
在这两个构建之后,我根据当前的git分支有条件地将S3部署到适当的那个。
它可以工作,但如果我只构建了我真正需要的那个,它会节省时间。基于分支构建的最简单方法是什么?
答案 0 :(得分:28)
使用test
使用的after_success:
- test $TRAVIS_BRANCH = "master" &&
ember build
命令。
ProxyGenerator
所有travis env变量都可用here。
答案 1 :(得分:5)
您可以在after_success
中执行shell脚本,并使用travis环境变量检查当前分支:
#!/bin/sh
if [[ "$TRAVIS_BRANCH" != "master" ]]; then
echo "We're not on the master branch."
# analyze current branch and react accordingly
exit 0
fi
将脚本放在项目中的某个位置并使用它:
after_success:
- ./scripts/deploy_to_s3.sh
可能还有其他有用的travis变量,它们列在here。
答案 2 :(得分:0)
在以下输入中,仅当脚本不是PR且分支为master时才会执行脚本。
after_success:
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" -a "$TRAVIS_BRANCH" = "master" ]; then bash doit.sh; fi'
仅评估TRAVIS_BRANCH
是不够的。通过分叉创建针对母版的PR时,TRAVIS_BRANCH
设置为母版。
另请参见https://docs.travis-ci.com/user/environment-variables/上TRAVIS_BRANCH
的描述:
TRAVIS_TAG
)的名称相同如果您使用标签,则还必须考虑TRAVIS_TAG
。如果设置了TRAVIS_TAG
,则将TRAVIS_BRANCH
设置为TRAVIS_TAG
的值。
after_success:
- if [ "$TRAVIS_PULL_REQUEST" = "false" -a \( "$TRAVIS_BRANCH" = "master" -o -n "$TRAVIS_TAG" \) ]; then doit.sh; fi
答案 3 :(得分:-1)
我想说上述解决方案很好,因为它们也可以转移到非Travis-ci构建系统中,但是TravisCI中有一个与此类似的功能:
stages:
- name: deploy
# require the branch name to be master (note for PRs this is the base branch name)
if: branch = master
尽管我无法使其与after_success
一起使用,但下一页上有关于“测试条件”的部分,我对此没有进行设置。
https://docs.travis-ci.com/user/conditional-builds-stages-jobs/