长 运行 作业不应阻止 MR 被合并

Long running job should not prevent a MR from being merged

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

应尽快将 report 阶段的结果告知开发人员,但不应阻止 MR 被合并。管道的行为应如下所示:

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

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

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

  1. 禁用“Pipelines must succeed”设置:此时即使build不成功也可以合并MR。
  2. reportallow_failure 设置为真。在这种情况下,可以在 build 完成后通过取消 report 作业合并 MR,但这违反了报告应始终执行的要求。如果您必须在能够合并之前取消可选作业,这也是糟糕的开发人员体验。
  3. 合并后执行report作业。这有两个缺点:
    • 只有MR合并后才会收到报告,而不是尽快收到。
    • report 作业不能post 将结果提交给 MR,MR 会通知相关人员。

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