如何configurationTravis-CI来构buildpull请求和合并,以便无需掌握冗余
把它放在“BDD”的条款:
背景:
鉴于我正在为GH回购贡献力量当我创build一个拉请求
然后特拉维斯应该build立最新的承诺当我推送到现有的拉取请求
然后特拉维斯应该build立最新的承诺当我合并一个拉请求主
那么特拉维斯应该build立主人
我被Travis-CI的“build push”和“build PRs”设置搞糊涂了,如下所示:
- 启用这两个都会导致每个Pull请求被Travis构build两次
- 一次用于该分支的提交
- 并再次将该分支合并提交到目的地
- 启用“构buildPR”会导致PR被构build,但不会导致合并后的构build(即在主数据库上)。
- 通过构build所有对回购的推动,启用“推”蛮力满足上述标准。 你可以尝试通过白名单和黑名单分支来挑逗事物,但是除非你严格遵守分行名称,否则这可能会让你感到吃惊。
这在Travis-CI文档和GH问题#3241中有更多解释。
任何人都知道满足上述标准的configuration?
我最终发现了另一个生长激素问题( #2111 ),这个问题让我想到尝试启用PR和推送,但是用白名单限制推送到特定的分支。 这似乎满足我的工作stream程的标准。 以下是我所做的:
- 在回购的Travis设置中启用PR和分支推送:
- 更改
.travis.yml
白名单master
分支 (即只build立推到主):
分支: 只要: - 主人
-
通过创build带有
.travis.yml
更改的PR来进行.travis.yml
,而另一个带有空提交的PR来validation它也适用于叉 。 -
validation成功合并提交构build从主 。
在接受的答案中描述的白名单方法有一些显着的限制。 特别是,它不支持在没有开放公关的情况下非冗余地build立任意分支机构。
我打开了一个问题,要求更好的解决scheme 。
你可以使用下一个工作stream程,如果你不仅要testingmaster
分支,还要testing其他分支:
- 保持“build立推”和“build立拉请求”
-
向您的
.travis.yml
添加branches:except
指令branches:except
:branches: except: - /^pr\..*/
在这个configuration中:
- 任何提交分支
feature-A
都会触发构build - 任何提交分支
pr.feature-A
将不会触发构build - 如果在打开的拉取请求中使用分支
pr.feature-A
,则会触发构build
工作stream示例
- 临时WIP分支在几个开发者之间共享:
wip.feature-A
,对这个分支的任何提交都会触发构build - 当分支准备合并到
master
,可以将其从wip.feature-A
重命名为pr.feature-A
并打开pull请求 - 如果在查看拉取请求时想要应用新的修复,只需推送到
pr.feature-A
在上面的所有步骤中,只会触发一个构build。