我有 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 的合并请求页面的自定义脚本。它执行以下操作。
- 通过查看 MR 页面检测源和目标分支
- 使用 TeamCity REST API 枚举属于目标分支的构建(在 TeamCity 8 中,我们可以分配自定义构建配置 ID 来构建,因此我们使用一些语义命名,如
devUnit
, devIntegration
,devWhatever
等...)
- 创建一个表,其中包含每个相关构建配置的源分支和目标分支的构建状态图像。
现在看起来像这样:
现在这种方法有一些缺点,比如如果一个人用另一个推送更新了一个分支,我无法从 GitLab 页面找出新的提交已经构建,或者我看到了旧的构建状态,所以我需要点击一个构建链接并检查在 TeamCity