TeamCity构建Git / GitHub拉取请求

时间:2012-09-28 06:04:44

标签: git github teamcity

我们有一个TeamCity 7.1安装,可以从GitHub存储库构建所有分支。

GitHub有一个通知挂钩回TeamCity以触发签入时的构建。我们还每隔120秒让TeamCity轮询GitHub以检查更改(如果在签入更改时服务器处于脱机状态)。

我们的正常发展遵循一个共同的模式:

  1. 从主人
  2. 创建分支
  3. 提交到该分支,直到完成功能
  4. 完成后,从主人拉出来合并任何更改并推送到远程
  5. 提交GitHub拉取请求以允许管理员合并为主
  6. 所有东西都在游泳(在经过多次搜索以获得正确的配置设置之后)但是......

    上述过程触发了TeamCity上的几个构建,我想知道它们是否都是必需的。通常情况下,我们最终会:

    • / refs / heads / branch-name
    • 的构建
    • / refs / pull / number / head
    • 的构建
    • / refs / pull / number / merge
    • 的构建

    当然,第一个版本是特定分支上的最后一个版本,第二个版本是拉取请求,但第三个版本是什么?

3 个答案:

答案 0 :(得分:13)

第三个构建实际上是最有价值的 - 它是拉请求自动合并的结果(当你按下github上的按钮时会发生合并)。

答案 1 :(得分:3)

您的构建似乎是多余的。在git中组织TeamCity构建功能分支的更节俭的方法如下:

  1. 组织refs/heads/master分支的持续集成。 120秒的民意调查在这里非常合理。
  2. 为每个refs/heads/feature-name分支组织夜间构建。根据我的经验,只有少数功能分支需要120秒轮询。
  3. TeamCity 7.1为自动触发功能分支提供了非常好的功能,因此可以使用refs/heads/feature-*之类的分支掩码通过几次单击设置步骤(2)。

    构建拉取请求没有任何意义,因为它们将被主版本覆盖。

答案 2 :(得分:0)

更新的答案,以防万一仍然有人使用TeamCity?

自2018年以来,有一个本地Pull Request Build Feature。与使用分支触发器和过滤器相比,这是一个更好的解决方案,因为它在内部版本和相应的PR 之间创建了双向链接,并且使您不必向列表中添加任何refs/pull/... VCS分支规范。

不过,如果您坚持使用pull/*/merge:请注意,这会创建多余的构建,以防万一需要线性历史记录”(=仅允许“ Rebase&在GH回购中启用了从PR合并南瓜)功能,因为在这种情况下,PR只能在其基础分支保持最新状态后才能进行合并。