3

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

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

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

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

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

GitLab 中的合并请求显示“等待 xxxx 的 CI 构建”。但查看详细信息链接不包含内部版本号。我怀疑这是因为它搜索 TeamCity 以找到匹配的构建并且没有找到它,因为它不是在第一个地方触发的。

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

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

4

2 回答 2

5

您应该决定如何触发构建:由 TeamCity 轮询 GitLab 以获取更新或由 GitLab。

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

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

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

确保分支全名(我在这里猜)。

于 2016-06-17T06:13:47.197 回答
0

我设法解决了与您类似的问题。实际上,我按照 GitLab 提供的说明进行操作

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

  1. 在 Teamcity 方面,您需要将内部版本号格式设置为 %build.vcs.number%
  2. 在 Teamcity 中配置分支规范以构建所有分支。我在我的案例中使用了 +:refs/heads/(*) 。

创建合并请求后,它会在 teamcity 中检查相同的 build.vcs.number,当构建完成后,状态将在 gitlab 的合并请求中更新

于 2016-08-19T09:44:03.027 回答