【问题标题】:Long running job should not prevent a MR from being merged长时间运行的作业不应阻止合并 MR
【发布时间】:2023-03-13 23:15:01
【问题描述】:

考虑具有以下作业的管道:

  • build:运行构建,需要 1 分钟
  • report:运行静态代码分析,将结果发布到 MR,耗时 59 分钟

应尽快通知开发人员report 阶段的结果,但不应阻止合并MR。管道的行为应该是这样的:

  1. build 必须始终成功,然后才能合并 MR。
  2. report 应始终最终启动并成功执行,但不应强制等待它才能合并 MR。

gitlab中是否有可能创建这样的管道?

到目前为止,我知道以下选项:

  1. 禁用“Pipelines must succeed”设置:这种情况下可以合并MR,即使build不成功。
  2. allow_failurereport 设置为真。在这种情况下,可以在build 完成后通过取消report 作业来合并MR,但这违反了始终执行报告的要求。此外,如果您必须在合并之前取消可选作业,那么开发人员体验也会很差。
  3. 合并后执行report 作业。这有两个缺点:
    • 我只会在 MR 合并后才得到报告,而不是尽快得到报告。
    • report 作业无法将其结果发布给 MR,MR 会通知相关人员。

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    您可以将report 作业移动到子管道(= 项目中的单独.yml 文件)并使用trigger keyword不带 strategy: depend 触发它。 这允许您触发作业而无需等待它,也无需考虑其在您的管道中的状态。

    【讨论】:

      猜你喜欢
      • 2022-09-28
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多