如何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程的标准。 以下是我所做的:

  1. 在回购的Travis设置中启用PR和分支推送:

启用travis push / pr设置

  1. 更改.travis.yml 白名单master分支 (即只build立推到主):
分支:
  只要: 
     - 主人
  1. 通过创build带有.travis.yml更改的PR来进行.travis.yml ,而另一个带有空提交的PR来validation它也适用于叉 。

  2. 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。