我正在使用Gitlab CI,因此一直致力于一个相当复杂的.gitlab-ci.yml
文件。该文件有一个after_script
部分,该部分在主任务完成时运行,或者主任务以某种方式失败。问题:我需要根据主任务是成功还是失败进行不同的清理,但我找不到任何表示主任务结果的Gitlab CI variable。
如何在after_script
部分内说明主要任务是成功还是失败?
答案 0 :(得分:5)
可接受的答案可能适用于大多数情况,但它不能回答原始问题,并且仅在每个阶段只有一份工作的情况下才有效。
注意:当前打开了一个功能请求(issues/3116),以处理on_failure
中的on_success
和after_script
。
可能可以使用变量将作业状态传递给after_script
脚本,但这还具有一个功能请求(issues/1926),可以在{{1}之间共享变量},before_script
和script
。
一种解决方法是将写入一个临时文件,该文件将在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