特拉维斯条件分支after_success

时间:2016-01-04 12:50:01

标签: travis-ci

在我的travis脚本中,我有以下内容:

after_success:
- ember build --environment=production
- ember build --environment=staging --output-path=dist-staging

在这两个构建之后,我根据当前的git分支有条件地将S3部署到适当的那个。

它可以工作,但如果我只构建了我真正需要的那个,它会节省时间。基于分支构建的最简单方法是什么?

4 个答案:

答案 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/