Gitlab CI:为什么允许下一阶段 运行
Gitlab CI: Why next stage is allowed to run
我有一个这样的 gitlab CI 文件
stages:
- build
- deploy
build-job:
stage: build
script:
- echo "Compiling the code..."
- echo "Compile complete."
when: manual
deploy-bridge:
stage: deploy
trigger:
project: tests/ci-downstream
据我了解,除非手动构建作业 运行 成功,否则部署桥阶段不应 运行。但这里不是这种情况。这正常吗?
Jobs in the same stage run in parallel. Jobs in the next stage run
after the jobs from the previous stage complete successfully.
您没有将 deploy-bridge
作业定义为 dependent
job, or that it needs
另一项要先完成的作业,因此它一到达舞台就可以 运行 立即完成。由于前一阶段都是 manual
个作业,GitLab CI/CD 将其解释为 'done',至少足以让其他阶段可以开始。
由于您似乎没有将 build-job
中的编译代码作为 artifact
上传,因此我们不能在此处使用 dependencies
关键字。该关键字所做的只是控制哪些作业的依赖项此作业需要,但如果它需要先前作业的工件,则该作业将需要运行并成功完成此 作业开始。此外,默认情况下,所有先前作业的所有可用工件都将被下载并可用于管道中的所有作业。 dependencies
关键字也可用于限制此 作业实际需要的工件。但是,如果我们“依赖”的作业中没有可用的工件,则会抛出错误。幸运的是我们可以使用另一个关键字。
needs
关键字控制着流水线的“流动”,以至于如果流水线中的任何一个作业(即使在最后的 1,000 个阶段)有 needs: []
它会运行 一旦管道启动(并且一旦有可用的 运行ner)。我们可以在此处使用 needs
使管道按您需要的方式流动。
...
deploy-bridge:
stage: deploy
needs: ['build-job']
trigger:
project: tests/ci-downstream
现在,在 build-job
成功完成之前,deploy-bridge
作业不会 运行。如果 build-job
失败,将跳过 deploy-bridge
。
needs
的另一个用途是它具有与 dependencies
相同的功能,因为它可以控制在哪些作业中下载哪些工件,但如果“需要”的工作根本没有工件。
dependencies
和 needs
都接受空数组,这等同于“不下载任何工件”,对于 needs
,运行 一旦 运行ner 可用。
我有一个这样的 gitlab CI 文件
stages:
- build
- deploy
build-job:
stage: build
script:
- echo "Compiling the code..."
- echo "Compile complete."
when: manual
deploy-bridge:
stage: deploy
trigger:
project: tests/ci-downstream
据我了解,除非手动构建作业 运行 成功,否则部署桥阶段不应 运行。但这里不是这种情况。这正常吗?
Jobs in the same stage run in parallel. Jobs in the next stage run after the jobs from the previous stage complete successfully.
您没有将 deploy-bridge
作业定义为 dependent
job, or that it needs
另一项要先完成的作业,因此它一到达舞台就可以 运行 立即完成。由于前一阶段都是 manual
个作业,GitLab CI/CD 将其解释为 'done',至少足以让其他阶段可以开始。
由于您似乎没有将 build-job
中的编译代码作为 artifact
上传,因此我们不能在此处使用 dependencies
关键字。该关键字所做的只是控制哪些作业的依赖项此作业需要,但如果它需要先前作业的工件,则该作业将需要运行并成功完成此 作业开始。此外,默认情况下,所有先前作业的所有可用工件都将被下载并可用于管道中的所有作业。 dependencies
关键字也可用于限制此 作业实际需要的工件。但是,如果我们“依赖”的作业中没有可用的工件,则会抛出错误。幸运的是我们可以使用另一个关键字。
needs
关键字控制着流水线的“流动”,以至于如果流水线中的任何一个作业(即使在最后的 1,000 个阶段)有 needs: []
它会运行 一旦管道启动(并且一旦有可用的 运行ner)。我们可以在此处使用 needs
使管道按您需要的方式流动。
...
deploy-bridge:
stage: deploy
needs: ['build-job']
trigger:
project: tests/ci-downstream
现在,在 build-job
成功完成之前,deploy-bridge
作业不会 运行。如果 build-job
失败,将跳过 deploy-bridge
。
needs
的另一个用途是它具有与 dependencies
相同的功能,因为它可以控制在哪些作业中下载哪些工件,但如果“需要”的工作根本没有工件。
dependencies
和 needs
都接受空数组,这等同于“不下载任何工件”,对于 needs
,运行 一旦 运行ner 可用。