运行 一个 CI 作业,仅当另一个手动作业被触发时
Run a CI job only if another manual job was triggered
我有一个 .gitlab-ci.yml
有 2 个部署和一个检查部署的 API 是否可以访问的作业。
stages:
- deploy-stage
- deploy-prod
- check
service:stage:
stage: deploy-stage
service:production:
stage: deploy-prod
when: manual
check:stage:
stage: check
check:production:
stage: check
dependencies: service:production
目前,即使指定了 dependencies
,我也有 check:production
运行宁 ,即使 service:production
作业被跳过(我没有手动触发它)。
我可以将allow_failure: false
添加到service:production
,这样check:production
就不是运行(间接的,因为整个pipeline gets halted), 但我更喜欢一种方法来 更明确地表达 check:production
→ service:production
.
的直接依赖
如何配置check:production
到运行自动触发,只有在service:production
手动触发?
您可以使用 needs
关键字来说明一项工作需要另一项工作。
stages:
- deploy-stage
- deploy-prod
- check
service:stage:
stage: deploy-stage
service:production:
stage: deploy-prod
when: manual
check:stage:
stage: check
check:production:
stage: check
dependencies: service:production
needs: ['service:production']
在此示例中,如果 service:production
失败,check:production
不会 运行,这是一项手动作业,尚未 运行,已被跳过,或已取消。
Needs
也可用于在前一阶段的其他不相关作业完成之前将作业告知 运行。这意味着 check:production
可以在 service:production
完成后开始,即使 service:stage
仍然是 运行ning。
这里是有关此关键字和其他关键字的更多信息的文档:https://docs.gitlab.com/ee/ci/yaml/#needs
您可以使用 dependencies
关键字获得类似的结果,但如果其他作业失败或者是未触发的手动作业,依赖作业仍将 运行,并且可能会失败,具体取决于结果第一份工作。 Needs
是更新和改进的选项。
我有一个 .gitlab-ci.yml
有 2 个部署和一个检查部署的 API 是否可以访问的作业。
stages:
- deploy-stage
- deploy-prod
- check
service:stage:
stage: deploy-stage
service:production:
stage: deploy-prod
when: manual
check:stage:
stage: check
check:production:
stage: check
dependencies: service:production
目前,即使指定了 dependencies
,我也有 check:production
运行宁 ,即使 service:production
作业被跳过(我没有手动触发它)。
我可以将allow_failure: false
添加到service:production
,这样check:production
就不是运行(间接的,因为整个pipeline gets halted), 但我更喜欢一种方法来 更明确地表达 check:production
→ service:production
.
如何配置check:production
到运行自动触发,只有在service:production
手动触发?
您可以使用 needs
关键字来说明一项工作需要另一项工作。
stages:
- deploy-stage
- deploy-prod
- check
service:stage:
stage: deploy-stage
service:production:
stage: deploy-prod
when: manual
check:stage:
stage: check
check:production:
stage: check
dependencies: service:production
needs: ['service:production']
在此示例中,如果 service:production
失败,check:production
不会 运行,这是一项手动作业,尚未 运行,已被跳过,或已取消。
Needs
也可用于在前一阶段的其他不相关作业完成之前将作业告知 运行。这意味着 check:production
可以在 service:production
完成后开始,即使 service:stage
仍然是 运行ning。
这里是有关此关键字和其他关键字的更多信息的文档:https://docs.gitlab.com/ee/ci/yaml/#needs
您可以使用 dependencies
关键字获得类似的结果,但如果其他作业失败或者是未触发的手动作业,依赖作业仍将 运行,并且可能会失败,具体取决于结果第一份工作。 Needs
是更新和改进的选项。