合并结果流水线 (PREMIUM ALL)
- 从 15.1 版本开始,合并结果流水线也会在 Draft 合并请求上运行。
合并结果流水线是合并请求流水线的一种。它是针对合并在一起的源分支和目标分支的结果运行的流水线。
极狐GitLab 使用合并的结果创建一个内部提交,因此流水线可以针对它运行。两个分支中都不存在此提交,但您可以在流水线详细信息中查看它。内部提交的作者始终是创建合并请求的用户。
流水线针对目标分支运行,因为它在您运行流水线时存在。 随着时间的推移,当您在源分支中工作时,目标分支可能会发生变化。 任何时候您想确保合并的结果是准确的,您都应该重新运行流水线。
当目标分支的更改与源分支中的更改冲突时,合并结果流水线无法运行。
在这些情况下,流水线作为合并请求的流水线运行,并标记为 merge request
。
先决条件
为合并结果启用流水线:
- 您必须具有维护者角色。
- 您必须使用 GitLab Runner 11.9 或更高版本。
- 您不能使用快进式合并。
- 您的仓库必须是极狐GitLab 仓库,而不是外部仓库。
为合并结果启用流水线
要为项目的合并结果启用流水线:
- 在左侧边栏中,选择 搜索或转到 并找到您的项目。
- 在左侧边栏中,选择 设置 > 合并请求。
- 在 合并选项 部分,选择 启用合并结果流水线。
- 单击 保存更改。
如果您选中该复选框但未将 CI/CD 配置为将流水线用于合并请求,您的合并请求可能会卡在未解决状态或您的流水线可能会被丢弃。
使用合并队列
当您启用合并结果的流水线 时,系统自动显示 Start/Add Merge Train 按钮。
通常,这是比立即合并合并请求更安全的选择,因为在实际合并发生之前,您的合并请求会使用预期的合并后结果进行评估。
有关更多信息,请阅读合并队列文档。
自动流水线取消
GitLab CI/CD 可以检测冗余流水线的存在,并取消它们以节省 CI 资源。
当用户在正在进行的合并队列中立即合并合并请求时,队列将被重建,因为它重新创建了预期的合并后提交和流水线。在这种情况下,合并队列可能已经有针对先前预期的合并后提交运行的流水线。 这些流水线被认为是多余的,会自动取消。
故障排查
即使将新更改推送到合并请求,也未创建合并结果的流水线
可能是由一些禁用的功能标志引起的。请确保在您的实例上启用了以下功能标志:
:merge_ref_auto_sync
要检查和设置这些功能标志值,请让管理员执行以下操作:
-
登录实例的 Rails 控制台:
sudo gitlab-rails console
-
检查标志是否启用:
Feature.enabled?(:merge_ref_auto_sync)
-
如果需要,启用功能标志:
Feature.enable(:merge_ref_auto_sync)
成功的合并结果流水线覆盖失败的分支流水线
当启用流水线必须成功设置时,系统有时会忽略失败的分支流水线。