将GitLab与TeamCity集成

12
自GitLab 7.6左右开始,有一个新选项可以直接从GitLab项目中使用TeamCity。在设置中有以下信息:
“Teamcity中的构建配置必须使用构建格式号%build.vcs.number%,您还需要配置监视所有分支以便合并请求构建,该设置在vsc根高级设置中。”
我不确定这是如何工作的。假设我有一个名为Foo的仓库。
我已经在TeamCity上设置了一个构建,用于监听具有分支规范的Foo:+:refs/pull/ */merge 然后,我在gitlab中fork Foo作为FooFork,进行更改,然后请求合并FooFork->Foo。
但是没有任何事情发生来测试这个合并,这是我期望GitLab要做的。如果我接受合并,那么构建服务器会立即启动并构建两次(master和/ref/master)。
我还将构建配置设置为精确使用:%build.vcs.number%作为构建编号,但是gitlab似乎没有给我任何关于构建结果的信息。
我有点困惑这个GitLab -> TeamCity集成到底是做什么的,以及我是否做错了什么。我当前正在运行GitLab 7.9和TeamCity 8.1.4。
更新:
看起来在版本8之前不支持这种用例 - https://github.com/gitlabhq/gitlabhq/issues/7240

您应该回答自己的问题,说明当前不支持这种情况,并关闭它,以便其他遇到相同问题的用户可以参考。 - JNYRanger
2个回答

9
我正在运行GitLab 8.0.2和TeamCity 9.1.1,并能够在分支和合并请求上运行CI构建。
我通过设置VCS触发器以及分支规范 +:refs / heads /(xyz *)来为特定分支触发CI构建,其中xyz是我们的票务系统前缀字符串,因为所有活动分支都需要以问题跟踪器中的条目命名。
我通过分支规范 +:refs /(merge-requests / *)触发合并请求的构建。
一切都按预期工作,并自动向我们报告所有功能/错误分支和合并请求的状态。
感谢Rob的评论,他链接到了有关合并请求规范的GitLab 8发布说明。

TeamCity看不到合并请求 =( - Sergey Tihon
我承认我转向了GitLab CI,所以我不知道这是否有效。如果无效,我会再次提出问题。 - Meirion Hughes
1
在这里使用GitLab-Enterprise,通常您应该能够看到合并请求,通常是refs/merge-requests/<your-MR-id>/head,尝试在一个远程指向GitLab托管的存储库上执行$ git ls-remote - Robert Heine
你是否能在TC上看到所有功能/错误分支的状态,或者你是否已经成功将提交状态反馈到Gitlab?如果是这样,你能否解释一下如何实现? - Frank
是的,TeamCity会自动显示最近MR构建(默认为7天)的“活动分支”,下拉菜单允许选择“所有分支”。https://confluence.jetbrains.com/display/TCD10/Working+with+Feature+Branches#WorkingwithFeatureBranches-Activebranches - jefeveizen

2
同样的问题在这里。可能还有另一种方法,我正在评估中。由于没有直接从目标MR获取合并状态的方法,您必须自己构建它:
我认为以下是需要完成的任务: 1.初始化一个裸仓库 `$ git init` 2.添加您的目标仓库 `$ git remote add origin git@your-repo:<origin.group>/<origin.repo>.git` 3.添加远程/要合并的特性的 `$ git remote add target git@your-repo:<feature.group>/<feature.repo>.git` 4.检出您的特性分支 `$ git checkout -b <feature.branch> feature/<feature.branch>` 5.检出您的原始分支 `$ git checkout -b <origin.branch> origin/<origin.branch>` 6.将特性分支变基到原始分支 `$ git rebase <feature.branch>`
[1]所述,GitLab-CE可以在创建合并请求时触发事件,
因此,您只需要构建一些可以评估WebHooks的元数据。
[1] http://doc.gitlab.com/ce/web_hooks/web_hooks.html#merge-request-events

看起来GitLab在GitLab-8.0.0中获得了这个功能,如此处所示:https://github.com/gitlabhq/gitlabhq/blob/master/CHANGELOG
  • 从refs/merge-requests/:id获取合并请求的能力
- Robert Heine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接