如果管道 job/stage 失败,则触发 action/job
Trigger action/job if pipeline job/stage fails
我有一个 GitLab 管道,其中一个作业将一些内容写入一个文件,一个简单的 .txt
文件,并推送一个 Git 标记。此作业后,执行其他作业。
我想触发自动 action/job 或撤消 .txt
文件写入并删除 Git 标记的东西,以防管道的任何作业失败。
这样的事情可以做吗?是否有某种 Git 仅在另一个失败时触发的实验室管道作业?
您正在寻找 when: on_failure
选项。它的文档在这里:https://docs.gitlab.com/ee/ci/yaml/README.html#when
如果你把它放在一个工作上,那么只有在你的管道中的另一个工作从早期阶段失败时,该工作才会 运行。如果您只需要在流水线的末端使用一个,这会很好地工作,但它还允许您在需要它的每个阶段之后使用多个。这是文档中的示例:
stages:
- build
- cleanup_build
- test
- deploy
- cleanup
build_job:
stage: build
script:
- make build
cleanup_build_job:
stage: cleanup_build
script:
- cleanup build when failed
when: on_failure
test_job:
stage: test
script:
- make test
deploy_job:
stage: deploy
script:
- make deploy
when: manual
cleanup_job:
stage: cleanup
script:
- cleanup after jobs
when: always
build
阶段的作业 运行 构建项目所需的任何东西,但如果失败,cleanup_build
阶段的作业将 运行 和删除任何构建工件,或任何其他需要的东西。
如果构建作业通过,则测试阶段作业 运行 将进行测试。如果这些都通过了,我们就不需要做任何清理工作,所以管道会立即失败。否则,我们继续部署阶段。
我们的部署阶段作业标有 when: manual
,这是您的管道的另一个有用选项。这意味着该作业不会 运行 直到 Gitlab 用户或 API 点击按钮开始作业。
我们在 cleanup
阶段的最后一份工作有 when: always
。这意味着无论前面的任何阶段发生什么,它总是 运行。这对于最终清理非常有用,如果部署失败,我们可以执行回滚或我们可能需要的任何其他操作。
when
关键字及其所有选项的文档在此处:https://docs.gitlab.com/ee/ci/yaml/README.html#when
我有一个 GitLab 管道,其中一个作业将一些内容写入一个文件,一个简单的 .txt
文件,并推送一个 Git 标记。此作业后,执行其他作业。
我想触发自动 action/job 或撤消 .txt
文件写入并删除 Git 标记的东西,以防管道的任何作业失败。
这样的事情可以做吗?是否有某种 Git 仅在另一个失败时触发的实验室管道作业?
您正在寻找 when: on_failure
选项。它的文档在这里:https://docs.gitlab.com/ee/ci/yaml/README.html#when
如果你把它放在一个工作上,那么只有在你的管道中的另一个工作从早期阶段失败时,该工作才会 运行。如果您只需要在流水线的末端使用一个,这会很好地工作,但它还允许您在需要它的每个阶段之后使用多个。这是文档中的示例:
stages:
- build
- cleanup_build
- test
- deploy
- cleanup
build_job:
stage: build
script:
- make build
cleanup_build_job:
stage: cleanup_build
script:
- cleanup build when failed
when: on_failure
test_job:
stage: test
script:
- make test
deploy_job:
stage: deploy
script:
- make deploy
when: manual
cleanup_job:
stage: cleanup
script:
- cleanup after jobs
when: always
build
阶段的作业 运行 构建项目所需的任何东西,但如果失败,cleanup_build
阶段的作业将 运行 和删除任何构建工件,或任何其他需要的东西。
如果构建作业通过,则测试阶段作业 运行 将进行测试。如果这些都通过了,我们就不需要做任何清理工作,所以管道会立即失败。否则,我们继续部署阶段。
我们的部署阶段作业标有 when: manual
,这是您的管道的另一个有用选项。这意味着该作业不会 运行 直到 Gitlab 用户或 API 点击按钮开始作业。
我们在 cleanup
阶段的最后一份工作有 when: always
。这意味着无论前面的任何阶段发生什么,它总是 运行。这对于最终清理非常有用,如果部署失败,我们可以执行回滚或我们可能需要的任何其他操作。
when
关键字及其所有选项的文档在此处:https://docs.gitlab.com/ee/ci/yaml/README.html#when