我的管道中有一份工作,其中有一个包含两个非常重要步骤的脚本:
mvn test 对我的代码运行 JUnit 测试junit2html 将测试的 XML 结果转换为 HTML 格式(查看结果的唯一可能方法,因为我的管道不是通过 MR 完成的)作为工件上传到 GitLabdocker rm 销毁之前在管道中创建的容器我的问题是,当我的测试失败时,脚本会立即停止在mvn test,因此junit2html永远不会到达该步骤,这意味着在失败的情况下永远不会上传测试结果,也永远docker rm不会执行,因此容器仍然存在并弄乱了后续管道其结果。
我想要的是即使脚本在某些时候失败,也能够将工作持续到最后。基本上,该作业在 GitLab CI / CD 中仍应算作失败,但应执行其整个脚本。我该如何配置?
Ada*_*all 32
在即使步骤失败也需要继续的每个步骤中,您可以.gitlab-ci.yml在该步骤中向您的文件添加一个标志。例如:
...
Unit Tests:
stage: tests
only:
- branches
allow_failure: true
script:
- ...
Run Code Online (Sandbox Code Playgroud)
allow_failure: true即使该特定步骤失败,该标志也会继续管道。关于 allow_failure 的 Gitlab CI 文档在这里:https ://docs.gitlab.com/ee/ci/yaml/#allow_failure
评论更新:如果您需要在失败后继续前进的步骤,并注意某些事情失败了,这对我来说效果很好:
./script_that_fails.sh > /dev/null 2>&1 || FAILED=true
if [ $FAILED ]
then ./do_something.sh
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18629 次 |
| 最近记录: |