如何在查看或评论时阻止TeamCity构建拉取请求?

时间:2013-08-10 08:00:31

标签: github teamcity

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

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

+:refs/pull/*/merge

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

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

“在我们的存储库上提取请求”是我们的VCS根名称。

问题:

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

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

有办法吗?

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

您是否按照此blog post配置了TeamCity?然后我激活GitHub中的TeamCity service hook,它可以在推送时触发TeamCity中的构建。这对我来说似乎做对了。或者我错过了什么?

答案 2 :(得分:2)

我知道这已经过时了,但我想发布我们发现的替代品:

  • 完全停止使用VCS根作为触发拉取请求的机制。相反,配置GitHub webhook以便在PR更新时通知您的网络应用,然后才trigger a build via the TeamCity REST API

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

答案 3 :(得分:0)

根据他们的TeamCity's issue tracker,导致无限循环构建的TeamCity.GitHub插件的问题已在v9.0中修复