长时间运行的作业不应阻止合并 MR
Posted
技术标签:
【中文标题】长时间运行的作业不应阻止合并 MR【英文标题】:Long running job should not prevent a MR from being merged 【发布时间】:2022-01-07 20:08:15 【问题描述】:考虑具有以下作业的管道:
build
:运行构建,需要 1 分钟
report
:运行静态代码分析,将结果发布到 MR,耗时 59 分钟
应尽快通知开发人员report
阶段的结果,但不应阻止合并MR。管道的行为应该是这样的:
build
必须始终成功,然后才能合并 MR。
report
应始终最终启动并成功执行,但不应强制等待它才能合并 MR。
gitlab中是否有可能创建这样的管道?
到目前为止,我知道以下选项:
-
禁用“Pipelines must succeed”设置:这种情况下可以合并MR,即使
build
不成功。
将allow_failure
的report
设置为真。在这种情况下,可以在build
完成后通过取消report
作业来合并MR,但这违反了始终执行报告的要求。此外,如果您必须在合并之前取消可选作业,那么开发人员体验也会很差。
合并后执行report
作业。这有两个缺点:
我只会在 MR 合并后才得到报告,而不是尽快得到报告。
report
作业无法将其结果发布给 MR,MR 会通知相关人员。
【问题讨论】:
【参考方案1】:您可以将report
作业移动到子管道(= 项目中的单独.yml
文件)并使用trigger
keyword 和不带 strategy: depend
触发它。
这允许您触发作业而无需等待它,也无需考虑其在您的管道中的状态。
【讨论】:
以上是关于长时间运行的作业不应阻止合并 MR的主要内容,如果未能解决你的问题,请参考以下文章
为啥我对 web.api 的请求被长时间运行的控制器代码阻止?