.gitlab-ci.yml after_脚本部分:如何判断任务是否成功?
我正在使用,因此一直在处理一个相当复杂的文件。该文件有一个.gitlab-ci.yml after_脚本部分:如何判断任务是否成功?,gitlab,gitlab-ci,status,Gitlab,Gitlab Ci,Status,我正在使用,因此一直在处理一个相当复杂的文件。该文件有一个after_script部分,该部分在主任务完成或主任务以某种方式失败时运行。问题:我需要根据主任务是否成功进行不同的清理,但我找不到任何指示主任务结果的清理 在after_script部分中,如何判断主任务是否成功?我建议定义另一个阶段,并使用语法,而不是在after_script中确定任务是否成功,您可以在以下位置使用when:on\u failure或when:on\u success 文档中的示例: stages: - buil
after_script
部分,该部分在主任务完成或主任务以某种方式失败时运行。问题:我需要根据主任务是否成功进行不同的清理,但我找不到任何指示主任务结果的清理
在
after_script
部分中,如何判断主任务是否成功?我建议定义另一个阶段,并使用语法,而不是在after_script
中确定任务是否成功,您可以在以下位置使用when:on\u failure
或when:on\u 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
被接受的答案可能适用于大多数情况,但它不能回答最初的问题,只有在每个阶段只有一份工作的情况下才有效 注意:当前打开了一个功能请求(),用于在脚本之后的
中处理失败时的和成功时的
可以使用变量将作业状态传递给后脚本
脚本,但这也打开了一个功能请求(),以便能够在前脚本
、脚本
和后脚本
之间共享变量
一种解决方法是写入一个临时文件,该临时文件将在after_脚本
块期间访问
test_job:
stage: test
before_script:
- echo "FAIL" > .job_status
script:
- exit 1
- echo "SUCCESS" > .job_status
after_script:
- echo "$(cat .job_status)"
所以,您是指脚本之后的条件,还是指主任务的结果。可以考虑将结果存储到变量中。ArihantGodha我很确定在一个阶段设置的变量在另一个阶段不会被保留。不过值得一试;尽管我接受了下面的答案,但这将是我首选的解决方案。(我将一个变量successed
设置为0
,然后在主脚本的最后将其设置为1
;然后在after\u脚本中测试它,以查看进程是否完成。)不幸的是,如果重试deploy\u job
,则清理\u job
不会执行,然后再次失败。如果要在需要相同的CI\u作业ID的脚本之后执行,或者要检查运行失败的docker容器,该怎么办=(exit 1
将停止脚本并echo“SUCCESS”>。作业状态将永远不会运行这是目前最好的解决方案