.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”>。作业状态将永远不会运行这是目前最好的解决方案