Jenkins Checkstyle趋势图无法显示历史失败记录问题咨询
解决Jenkins Checkstyle趋势图丢失失败构建记录的问题
我之前帮不少开发者排查过这个问题,你遇到的情况核心是Checkstyle插件的参数配置和构建状态的交互导致失败构建的记录没被持久化下来。咱们一步步来解决:
先搞清楚问题根源
你当前的配置里usePreviousBuildAsReference: true是个关键——这个参数会让插件把上一次构建作为基准来计算趋势,但当后续构建成功时,插件会默认优先追踪成功构建的报告,直接把之前失败的构建排除出趋势集合了。另外,虽然你开了canRunOnFailed: true让插件在失败构建里运行,但如果没有强制保留所有构建数据的设置,失败构建的报告很容易被后续操作覆盖。
调整CheckStylePublisher配置(最直接的修复)
修改你post阶段的步骤,调整这几个核心参数:
step([ $class: 'CheckStylePublisher', pattern: 'standard.xml', unHealthy: '0', usePreviousBuildAsReference: false, // 关掉基准构建参考,让每个构建独立计入趋势 canRunOnFailed: true, keepAllBuilds: true, // 强制保留所有构建的分析数据,不管成功失败 healthy: '0', // 可选:和unHealthy保持一致,任何违规都标记构建不健康 thresholds: [[$class: 'Threshold', unstableTotal: '0']] // 可选:让违规只标记构建不稳定,而非直接失败(更利于数据保留) ])
每个参数的作用:
usePreviousBuildAsReference: false:避免插件用后续成功构建覆盖之前失败构建的趋势数据keepAllBuilds: true:强制插件把所有构建(成功/失败/不稳定)都纳入趋势计算的历史库- 如果不想让代码检查直接搞挂构建,可以用
thresholds把构建状态改成不稳定,这样失败的记录会更稳定地被插件保留
确保失败构建能生成有效报告
有时候构建失败是因为ESLint命令直接返回非0退出码,导致Jenkins提前终止,报告还没生成就停了。你得调整ESLint的执行命令,确保不管检查通不通过,都能输出standard.xml:
eslint . --format checkstyle --output-file standard.xml || true
加上|| true让命令始终返回0,保证报告生成完成。之后你可以用自定义逻辑或者插件来根据报告里的违规数标记构建状态(比如用Warnings NG插件来更灵活地处理)。
最后检查插件版本和全局配置
- 把Checkstyle插件升级到最新版,旧版本确实存在趋势数据丢失的bug,升级后很多问题会自动解决
- 去Jenkins全局配置里找Checkstyle的设置,确认没有勾选类似“仅保留成功构建的趋势数据”的选项
调整完之后,你可以故意写个违规代码触发一次失败构建,然后修复代码让构建成功,再去看趋势图,应该就能看到之前的失败构建记录(比如你说的构建75)和成功构建一起显示了。
内容的提问来源于stack exchange,提问作者Sean Lynch
相关产品推荐
相关产品推荐

