如何在Jenkins构建后阶段解析日志并展示指定测试结果内容
Jenkins构建后提取TestResult日志失败常见遗漏配置
- 脚本沙箱权限未放开:Jenkins默认启用脚本安全沙箱,禁止构建后Groovy脚本访问构建日志、修改构建对象属性。你需要进入「Manage Jenkins」->「Security」->「Script Security」页面,将脚本执行时提示的被拦截方法加入允许列表,也可以临时取消脚本的「Use Groovy Sandbox」勾选验证(仅推荐测试环境使用)。
- 未正确读取构建全量日志:你需要确保Groovy脚本中正确获取了当前构建的完整日志,参考可用的提取代码如下:
// 获取当前构建实例 def currentBuild = Thread.currentThread().executable // 读取全量构建日志 def allLogLines = currentBuild.getLog(Integer.MAX_VALUE) // 匹配目标日志行 def targetLines = allLogLines.findAll { line -> line.trim().startsWith("TestResult") && line.contains("=>") } // 先输出到构建控制台排查脚本是否执行 println "======== 提取的测试结果 ========" targetLines.each { println it }
运行后先查看构建的完整控制台输出,有没有上面的println内容,如果没有说明脚本根本没有被触发执行,需要检查构建后步骤的顺序,有没有前置步骤失败导致后续步骤被跳过。
- 缺少结果展示插件:如果需要将提取的内容展示在构建结果首页,需要提前安装「Summary Display Plugin」插件,安装后添加如下代码即可在结果页渲染内容:
import hudson.plugins.summary_display.SummaryDisplayAction if(targetLines) { def summaryContent = targetLines.join("<br>") currentBuild.addAction(new SummaryDisplayAction("测试结果汇总", summaryContent, "info.png")) currentBuild.save() }
- 执行时机错误:如果你的Groovy脚本放在了构建步骤中而不是构建后步骤,会出现日志还没完全生成就提前执行匹配,导致漏抓内容。
内容的提问来源于stack exchange,提问作者Samselvaprabu
相关产品推荐
相关产品推荐

