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

时间:2018-04-17 00:14:45

标签: gitlab gitlab-ci status

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

如何在after_script部分内说明主要任务是成功还是失败?

3 个答案:

答案 0 :(得分:5)

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

注意:当前打开了一个功能请求(issues/3116),以处理on_failure中的on_successafter_script

可能可以使用变量将作业状态传递给after_script脚本,但这还具有一个功能请求(issues/1926),可以在{{1}之间共享变量},before_scriptscript

一种解决方法是将写入一个临时文件,该文件将在after_script块中访问。

after_script

答案 1 :(得分:4)

我建议您定义另一个阶段,并使用when语法,而不是确定任务是否在after_script中成功或失败,您可以使用when: on_failure或{ {1}}。

文档中的示例:

when: on_success

答案 2 :(得分:4)

从 gitlab-runner 13.5 开始,您可以使用 CI_JOB_STATUS 变量。

test_job:
  # ...
  after_script:
    - >
      if [ $CI_JOB_STATUS == 'success' ]; then
        echo 'This will only run on success'
      else
        echo 'This will only run when job failed or is cancelled'
      fi

请参阅 GitLab 关于预定义变量的文档:https://docs.gitlab.com/ee/ci/variables/predefined_variables.html