Gitlab - 在CI服务器中构建合并请求

时间:2013-10-01 09:57:14

标签: git teamcity gitlab

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

从我可以看到这在GitLab CI中是可能的,但转移到那对我们来说不是一个现实的选择。

我已经看过有关使用分支规范(如+ refs / pull / * / merge)在GitHUB上实现此功能的教程 - 是否有类似的分支规范由GitLAB创建?

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

1 个答案:

答案 0 :(得分:11)

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

因此,我们有development分支和一个推特征分支,具有特定名称dev/feature-name-here

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

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

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

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

    TC Build status at GitLab

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