6

目前,我的团队正在使用 TeamCity 从 GitHub 自动构建拉取请求。

我们有一个配置来构建所有拉取请求。在config的版本控制设置中,我们的分支规范是

+:refs/pull/*/merge

在“构建触发器”配置设置中,我们只有一个触发器,其触发器规则如下:

+:root=Pull Requests on our Repository:\***/*\*

“Pull Requests on our Repository”是我们的 VCS 根名称。

问题:

  • 当有人在 GitHub 网站上查看拉取请求而不做任何其他事情时,将在 TeamCity 构建代理中触发构建。这很烦人,因为有时,我们有多个构建代理构建相同的拉取请求(当多人查看时)。
  • 当有人对拉取请求发表评论时,也会触发构建。

从我的角度来看,我希望 TeamCity 开始构建的唯一时间是新提交被推送到拉取请求时。

有没有办法做到这一点?

4

4 回答 4

7

每次重新计算分支的可合并性时, Github 的refs/pull/*/merge分支都会更新,即每次提交到目标(最有可能master)分支时。当拉取请求关闭然后重新打开时,它们也会更新。Github 的支持表示这些分支不适合最终用户使用。目前唯一的解决方法是refs/pull/*/head自动在refs/pull/*/merge分支上运行构建并手动在分支上运行。

于 2014-01-22T11:06:21.070 回答
2

您是否按照此博客文章配置了 TeamCity ?然后,我在 GitHub 中激活TeamCity 服务挂钩,该挂钩负责在有推送时触发 TeamCity 中的构建。这似乎对我来说是正确的。还是我错过了什么?

于 2013-08-10T22:10:43.243 回答
2

我知道这很旧,但我想发布我们发现的替代方案:

  • 完全停止使用 VCS 根作为触发拉取请求的机制。相反,配置GitHub webhook以在 PR 有更新时通知您的 Web 应用程序,然后才通过 TeamCity REST API 触发构建

  • 在您的构建配置中,添加一个检查 PR 中更改内容的步骤。如果没有任何改变(即没有添加新的提交),或者如果 PR 已关闭,则取消构建。这样做的问题是构建队列仍将填充随后将被取消的构建。此外,您必须将上次构建的提交存储在某处以进行检查。

于 2017-05-18T22:25:22.647 回答
0

根据TeamCity 的问题跟踪器,TeamCity.GitHub 插件导致构建无限循环的问题已在 v9.0 中修复

于 2015-02-11T15:10:29.890 回答