Dan*_*com 10 status gitlab gitlab-ci
我正在使用Gitlab CI,因此一直在处理相当复杂的.gitlab-ci.yml文件。该文件具有一个after_script部分,该部分在主要任务完成或主要任务因某种原因失败时运行。问题:我需要根据主要任务是成功还是失败进行不同的清理,但是我找不到任何表示主要任务结果的Gitlab CI变量。
在该after_script部分中,我怎么知道主要任务是成功还是失败?
小智 10
可接受的答案可能适用于大多数情况,但是它不能回答原始问题,并且仅在每个阶段只有一份工作的情况下才有效。
注:目前有一个功能请求打开(问题/ 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)"
Run Code Online (Sandbox Code Playgroud)
从 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
Run Code Online (Sandbox Code Playgroud)
请参阅 GitLab 关于预定义变量的文档:https : //docs.gitlab.com/ee/ci/variables/predefined_variables.html
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3613 次 |
| 最近记录: |