【发布时间】:2021-01-20 03:06:39
【问题描述】:
假设您有以下管道:
Job A (deploy) -> Job B (test) -> Job C (remove test deployment)
管道应部署测试映像并在成功部署后对其进行测试。测试后,无论测试输出如何,我都想运行清理脚本,但前提是部署了测试映像(作业 A)。
总结一下:我希望 Gitlab 仅在作业 A 成功时执行作业 C,但在作业 B 之后。
不起作用的事情:
-
when: on-failure(作业 A 或作业 B 可能失败,但只有作业 A 很重要) -
when: always(可能作业 A 失败导致作业 C 失败) -
when: on-success(要求所有作业都成功)
我知道 GitLab 有一个名为 DAG Pipelines 的功能,它允许您使用 needs 关键字指定对其他作业的多个依赖项,但遗憾的是,when 关键字始终适用于所有先前的作业。所以你不能说这样的话:
when:
on-success: job-a
always: job-b
我错过了什么还是没有办法实现这种行为?
【问题讨论】:
-
澄清一下 - 即使作业 A(部署)失败,您想要作业 B(测试作业)运行?
-
不,应该跳过。我想在作业 B 通过或失败后运行作业 C。但工作 A 应该已经过去了。