目前,我的团队正在使用TeamCity从GitHub自动构建拉取请求。
我们有一个配置来构建所有拉取请求。在配置的版本控制设置中,我们的分支规范是
+:refs/pull/*/merge
在“构建触发器”配置设置中,我们只有一个具有以下触发规则的触发器:
+:root=Pull Requests on our Repository:\***/*\*
“在我们的存储库上提取请求”是我们的VCS根名称。
问题:
从我的角度来看,我希望TeamCity开始构建的唯一时间是将新提交推送到拉取请求。
有办法吗?
答案 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中修复