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

Dav*_*irk 17 git teamcity gitlab

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

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

我已经看过关于使用像+ refs/pull/*/merge这样的分支规范在GitHUB上实现这个的教程 - GitLAB是否创建了类似的分支规范?

我们使用的是GitLab的4.2版,但如果需要此功能和TeamCity的第8版,则可以升级

Ole*_*gas 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 Build状态

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