如何在使用GitLab和TeamCity时自动构建合并请求

时间:2016-06-17 02:11:50

标签: teamcity gitlab gitlab-8

我正在使用GitLab 8.3.2和TeamCity 9.1.6。我已经设置了JetBrains TeamCity CI服务,当更改被推送到GitLab时,它正在触发TeamCity中的构建。

我希望在创建合并请求时触发构建(我的理解是这个构建可以保证点击合并按钮不会破坏事物)。

我将TeamCity中的分支规范设置为:

+:refs/heads/*
+:refs/(merge-requests/*)

我可以在TeamCity中看到合并请求,但它们实际上并没有构建。

GitLab中的合并请求说'CI build for xxxx'。视图详细信息链接不包含内部版本号。我怀疑这是因为它搜索TeamCity找到匹配的构建并且找不到它,因为它没有在第一位触发。

我没有在TeamCity中配置任何构建触发器。 (我最初有一个VCS触发器,但是一旦我意识到GitLab正在为我触发构建,我就将其关闭了。)

如何进行设置以便合并请求触发TeamCity中的构建并让GitLab在合并请求中显示构建结果。

2 个答案:

答案 0 :(得分:4)

您应该决定如何触发构建:由TeamCity调查GitLab的更新或GitLab。

对于TeamCity方式,您需要在构建配置中添加VCS触发器。这将使TeamCity触发器构建在“分支规范”中配置的分支上。您还可以限制分支以在触发器设置中触发构建。您需要disable GitLab触发TeamCity中的构建。

对于在所有分支中触发构建的GitLab方法,您可能需要将分支规范设置为

+:(refs/heads/*)
+:(refs/merge-requests/*)

确保分支已完整命名(我猜这里)。

答案 1 :(得分:0)

我设法解决了与你类似的问题。实际上,我遵循GitLab提供的指示

  

Teamcity中的构建配置必须使用构建格式编号%build.vcs.number%,您还需要配置对所有分支的监视,以便构建合并请求,该设置位于vsc root高级设置中。

  1. 在Teamcity方面,您需要将内部版本号格式设置为%build.vcs.number%
  2. 在Teamcity中配置分支规范以构建所有分支。我已经使用了+:refs / heads /(*)作为我的案例。
  3. 创建合并请求后,它会在teamcity中检查相同的build.vcs.number,并在构建完成后,状态将在gitlab的合并请求中更新