dav*_*idA 5 performance merge gitlab gitlab-ci merge-request
我正在试用 GitLab 的“终极”版本,特别是合并结果管道功能以及相关的合并列车功能。
我为我的项目启用了合并结果管道和合并列车,合并方法设置为合并提交,并且.gitlab-ci.yml根据文档,我的规则有以下规则:
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
Run Code Online (Sandbox Code Playgroud)
这一切似乎都很顺利,但有一件事我不明白。
想象一下,只有一个打开的合并请求,并且main自创建相关分支以来目标分支上没有发生任何更改。当我推送到 MR 分支时,我期望运行“合并结果”管道,据我了解,这是目标分支与我的 MR 分支的抢先合并。管道成功,MR 现在有资格添加到合并列车中。
如果我确实将其添加到合并列车中,它会再次构建,我必须等待它完成才能合并。为什么这是必要的?它已经构建了合并的结果,此后没有任何变化,这是可以检测到的,那么为什么效率低下呢?
这导致我的团队希望使用“立即合并”按钮而不是添加到合并列车,以避免多余的管道(以及由此产生的等待实际合并发生的情况)。我不希望这成为一种习惯,因为它违背了这两个功能的目的。
以前我们只使用仅 FF 的分支管道,尽管不断重新设置或合并目标很痛苦,但至少如果构建是绿色的并且没有任何更改,则合并可以立即发生。
也许我的配置遗漏了一些东西?
syt*_*ech -1
这是因为合并结果管道和合并列车是两个独立的事件。GitLab 会自动检测合并列车中的冗余管道,并自动取消这些冗余管道。
但是,如果您将 MR 添加到合并列车中,并说它依赖于另一个 MR,则正在构建的内容与“合并结果”管道不同,因为还必须添加列车中其他 MR 的引用。
根据您描述的场景,合并列车管道实际上并不冗余,因此不会自动取消。
还值得注意的是,对合并列车的快进合并支持是合并列车的计划功能,以使它们更加高效。
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |