我们正在运行Jenkins的Sonar,并希望在超出Sonar限制时将构建标记为不稳定.我们已在质量配置文件中将相应的限制设置为警报.
我们认为我们可以使用Build Breaker将Sonar标记为失败(将该事实放入Jenkins日志中),然后使用Jenkins Post-build Groovy脚本在该情况下使构建不稳定.
不幸的是,Jenkins Sonar插件标志着构建失败(并且停止构建过程)如果Sonar失败并且Jenkins人员已经表明这是设计并且已经将相关缺陷设置为"将无法修复".
我也尝试将Sonar的日志记录设置为Verbose,希望超出限制的事实将在日志中(因此我们可以再次使用post build groovy任务),但似乎也不是这样.
任何见解?在这一点上,在我看来,最好的方法是创建一个Build Breaker变体,它只是报告警报但不会破坏构建,但如果可以避免,我宁愿不去自定义插件路由.
好吧,我们已经解决了这个令我们满意的问题,尽管它需要一个定制的Sonar插件.
我们创建了一个BuildBreaker版本(我们称之为BuildWarner).唯一的区别(插件名称,包名称,类名等除外)是AlertThresholdChecker.java的第44行更改为:
fail("Alert thresholds have been hit (" + count + " times).");
Run Code Online (Sandbox Code Playgroud)
至 :
logger.info("SONARTHRESHOLDSEXCEEDED - Alert thresholds have been hit (" + count + " times).");
Run Code Online (Sandbox Code Playgroud)
一旦在Sonar中运行,如果任何警报命中达到错误阈值级别,Jenkins控制台将包含短语SONARTHRESHOLDSEXCEEDED.
然后,安装Jenkins Groovy Postbuild插件.我们使用以下Groovy脚本:
if(manager.logContains(".*SONARTHRESHOLDSEXCEEDED.*")) {
manager.addWarningBadge("Sonar Thresholds Exceeded")
manager.createSummary("warning.gif").appendText("<h1>Sonar Thresholds Exceeded</h1>", false, false, false, "red")
manager.buildUnstable()
}
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以使用Jenkins Text Finder插件.
需要注意的是,Sonar插件必须在Groovy Post Build或Text Finder插件之前.
希望这有助于其他人.
| 归档时间: |
|
| 查看次数: |
8168 次 |
| 最近记录: |