[英]Gitlab-ci How can I trigger a cleanup job only after previous stage succeeded disregarding all other stages status
[英]How make a job depend from other job in previous stage
我有相同的阶段:
stage:
- A
- B
job1:
stage: A
job2:
stage: A
job3 :
stage: B
顺序必须是 job1 -> job3 -> job2 并且每个作业都依赖于上一个作业。
job1 和 job3 工作正常,但 job2 依赖于 job3(前一阶段)不工作。 我收到错误“job2 作业:需要 job3 未在当前或先前阶段定义”
这个问题有什么解决办法吗?
您可以使用needs 关键字在一个工作与另一个工作之间创建非循环关系 - 这也使您可以使工作依赖于任何先前阶段的任何工作 - 但是在您的情况下您不需要这样做。
将 needs 关键字用于更高级的场景(例如忽略后续阶段的作业失败)。
请记住,共享一个阶段的所有作业都将(默认情况下)并行运行。 这应该工作得很好:
stages:
- first
- second
job1:
stage: first
script: echo "this job will run"
job2:
stage: first
script: echo "at the same time as this job"
job3:
stage: second
script: echo "this job will run after all jobs in the first stage succeed"
你的问题是
“如何使工作依赖于前一阶段的其他工作”
上面的例子回答了这个问题。 但是在你的描述中你写了
“...序列必须是 job1 -> job3 -> job2”
根据该描述,可以这样实现:
- first
- second
- third
job1:
stage: first
script: echo "this job will run during the first stage"
job2:
stage: third
script: echo "this job will run during the third stage"
job3:
stage: second
script: echo "this job will run during the second stage"
上面的配置将保证您的所有作业都不会并行执行并按照您描述的顺序进行。 在这种情况下,您仍然不需要needs
关键字,而且配置会更易于阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.