有条件地触发TravisCI构建阶段?

时间:2017-06-09 18:23:13

标签: github continuous-integration travis-ci

我正在使用TravisCI's Build Stages将我的工作分为两个阶段:

  1. 在多个环境中构建和测试。
  2. 如果阶段1通过,则构建并部署。
  3. 我希望Travis在提交给两个GitHub分支masterdev时运行作业,并将请求提取到masterdev。但是,我只想在提交master时运行第二阶段。

    有没有办法在提交到非master的分支和拉取请求时完全忽略第2阶段?

    这是我.travis.yml在写这篇文章时的样子: https://github.com/SammyIsra/photostream-react/blob/c354a62c3cc963b345a5c2fb95658c90ddc39d21/.travis.yml

    更新的 这似乎还不可能。但是,从this comment on the Build Stages feedback board开始,TravisCI团队可能正在开展类似的工作。每当我得知它被添加为一个特征,或者它肯定不可能,我将改变这个问题。

1 个答案:

答案 0 :(得分:0)

build stages section中触发作业时似乎没有办法忽略特定分支,但是看起来只有在推送到 loadData = () => { let deferred = this.$q.defer(); this.siAsset.getAllcomponents().then((resp) => { if(resp.statusCode){ deferred.reject('No Mappable Assets Found'); }else{ deferred.resolve(resp) } }, (err) => { if(err =="TypeError: Cannot read property 'components' of null"){ deferred.reject('No Mappable Assets Found'); }else{ this.$log.error(err) } }) return deferred.promise } 时才会触发部署。

在构建阶段.config(($stateProvider) => { "ngInject"; $stateProvider .state('map', { url: '/map', component: 'map', resolve:{ loadData:(siMapUtils) => {return siMapUtils.loadData()}, isAuthenticated: (siUser) => { return siUser.isAuthenticated() }, isAccessible: (siRoutePermissions) => { return siRoutePermissions.validate({ permissionModules:['MAP_READ'] }) } } }); })部分,您可以将master命令包装在快速Bash script语句中以测试environment variable which shows what branch you're on

npm run build

然后,在Surge部署中,您可以restrict the deployment to a particular branch使用:

if

NPM deployment基本相同:

if [ TRAVIS_BRANCH == "master" ]; then npm run build; fi

注意:我自己没有尝试过这些,因此它可能会或可能不会与新的构建阶段功能结合使用。