作者:小帅 | 来源:互联网 | 2022-12-20 14:28
我正在使用Gitlab CI,因此一直在处理相当复杂的.gitlab-ci.yml
文件。该文件具有一个after_script
部分,该部分在主要任务完成或主要任务因某种原因失败时运行。问题:我需要根据主要任务是成功还是失败进行不同的清理,但是我找不到任何表示主要任务结果的Gitlab CI变量。
在该after_script
部分中,我怎么知道主要任务是成功还是失败?
1> 小智..:
可接受的答案可能适用于大多数情况,但是它不能回答原始问题,并且仅在每个阶段只有一份工作的情况下才有效。
注:目前有一个功能请求打开(问题/ 3116)来处理on_failure
,并on_success
在after_script
。
这可能是可以使用变量作业状态传递给一个after_script
脚本,但是这也有一个功能要求(问题/ 1926年)建成能之间的共享变量before_script
,script
和after_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)"
2> Rekovni..:
after_script
建议您定义一个阶段,并使用when语法(可以在其中使用when: on_failure
或)来定义另一个阶段,而不是确定任务在中是否成功或失败when: 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