Maven构建状态异常:重跑测试后流水线状态未更新如何处理?
问题
在发布流水线的Bash任务中执行测试流程:先运行mvn test执行全部测试,若失败则再次运行mvn test仅重跑失败用例。但遇到问题:首次测试失败后,即便重跑成功,流水线任务状态仍显示失败,需要基于标志值手动控制流水线的最终状态。
解决方法
通过手动跟踪测试状态并控制Bash任务的退出码,可以实现基于最终测试结果更新流水线状态的需求,具体脚本如下:
# 初始化测试状态标志,默认成功 TEST_PASSED=true # 执行首次全量测试 mvn test # 检查首次测试结果,失败则执行重跑 if [[ $? -ne 0 ]]; then TEST_PASSED=false # 重跑失败测试用例(根据实际测试框架调整参数,示例为Surefire插件的重跑参数) mvn test -Dsurefire.failIfNoTests=false -Dsurefire.runOrder=failedfirst # 检查重跑结果,成功则更新状态标志 if [[ $? -eq 0 ]]; then TEST_PASSED=true fi fi # 根据最终状态控制任务退出码,决定流水线状态 if $TEST_PASSED; then exit 0 # 流水线标记为成功 else exit 1 # 流水线标记为失败 fi
关键逻辑说明
- 用
TEST_PASSED变量记录最终测试状态,初始设为true - 通过
$?获取每条mvn test命令的退出码:$? -ne 0表示命令执行失败(测试未通过),$? -eq 0表示成功 - 重跑测试后根据结果更新状态标志
- 最后通过
exit 0或exit 1手动控制Bash任务的退出码,流水线会以此作为任务最终状态的判断依据:exit 0对应成功,exit 1对应失败
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

