繁体   English   中英

如何使工作依赖于前一阶段的其他工作

[英]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关键字,而且配置会更易于阅读。

您的代码中有错字。 它必须是阶段而不是阶段

下面是工作代码。

stages: 
  - A
  - B

job1:
  stage: A
  script:
   - echo "Job 1"

job2: 
 stage: A
 script:
   - echo "Job 2"
 needs:
  - job1

job3 : 
 stage: B 
 script:
   - echo "Job 3"
 needs:
   - job2

我不得不删除标签:因为它在我的跑步者内部。 请参阅“可视化”选项卡中清楚地显示依赖关系。 在此处输入图像描述

我验证它首先触发 job1 并且 job3 等待它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM