.gitlab-ci.yml after_script部分:如何判断任务是成功还是失败?

问题描述 投票:4回答:2

我正在使用Gitlab CI,所以一直在研究一个相当复杂的.gitlab-ci.yml文件。该文件有一个after_script部分,当主要任务完成时运行,或者主要任务以某种方式失败。问题:我需要根据主任务是成功还是失败进行不同的清理,但我找不到任何指示主任务结果的Gitlab CI variable

after_script部分,我如何判断主要任务是成功还是失败?

gitlab gitlab-ci status
2个回答
4
投票

我没有确定after_script中任务是成功还是失败,而是建议定义另一个阶段,并使用when语法,您可以使用when: on_failurewhen: on_success


文档中的示例:

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

6
投票

接受的答案可能适用于大多数情况,但它不回答原始问题,只有在每个阶段只有一个工作时才会有效。

注意:目前有一个功能请求打开(issues/3116)来处理on_failure中的on_successafter_script

可以使用变量将作业状态传递给after_script脚本,但这也有一个功能请求(issues/1926)打开,以便能够在before_scriptscriptafter_script之间共享变量。

一种解决方法是写入将在after_script块期间访问的临时文件。

test_job:
  stage: test
  before_script:
    - echo "FAIL" > .job_status
  script:
    - exit 1
    - echo "SUCCESS" > .job_status
  after_script:
    - echo "$(cat .job_status)"
© www.soinside.com 2019 - 2024. All rights reserved.