17

我们正在使用 GitLab 来管理我们的存储库。我们正在尝试遵循 GitFlow 流程,作为其中的一部分,我们希望能够在 TeamCity 中针对任何合并请求自动构建和执行测试。

据我所知,这在 GitLab CI 中是可能的,但转移到这对我们来说不是一个现实的选择。

我已经看到有关在 GitHUB 上使用 +refs/pull/*/merge 之类的分支规范实现此目的的教程——GitLAB 是否创建了类似的分支规范?

我们正在使用 GitLab 4.2 版,但如果需要此功能和 TeamCity 8 版,可以升级

4

1 回答 1

11

我有 GitLab 6.3 和 TeamCity 8,我也需要构建功能分支。我们有以下工作流程(它基于 git-flow,但根据我们的发布周期略有变化)。

所以,我们有development一个分支和一个推送具有特定名称的功能分支dev/feature-name-here

接下来,在 GitLab 中创建一个从dev/feature-name-here到的合并请求development

TeamCity 配置为使用以下 refspec 为每个分支自动运行构建:+:refs/heads/dev/(*)因此我们可以看到分支的构建feature-name-here是自动启动的。

接下来,我有一个嵌入到 GitLab 的合并请求页面的自定义脚本。它执行以下操作。

  1. 通过查看 MR 页面检测源和目标分支
  2. 使用 TeamCity REST API 枚举属于目标分支的构建(在 TeamCity 8 中,我们可以分配自定义构建配置 ID 来构建,因此我们使用一些语义命名,如devUnit, devIntegration,devWhatever等...)
  3. 创建一个表,其中包含每个相关构建配置的源分支和目标分支的构建状态图像。

现在看起来像这样:

GitLab 的 TC 构建状态

现在这种方法有一些缺点,比如如果一个人用另一个推送更新了一个分支,我无法从 GitLab 页面找出新的提交已经构建,或者我看到了旧的构建状态,所以我需要点击一个构建链接并检查在 TeamCity

于 2013-12-25T04:08:44.040 回答