jenkins - 超出 Sonar 限制时使 Jenkins Build 不稳定

标签 jenkins sonarqube

我们正在 Jenkins 运行 Sonar ,并希望在超出 Sonar 限制时将构建标记为不稳定。我们已经在质量配置文件中将适当的限制设置为警报。

我们认为我们可以使用 Build Breaker 将 Sonar 标记为失败(这会将这一事实放入 Jenkins 日志中),然后在这种情况下使用 Jenkins Post-build Groovy 脚本来不稳定构建。

不幸的是,如果 Sonar 失败,Jenkins Sonar 插件会标记构建失败(并停止构建过程),并且 Jenkins 人员表示这是设计好的,并将相关缺陷设置为“不会修复”。

我还尝试将 Sonar 的日志记录设置为 Verbose,希望超出的限制会出现在日志中(因此我们可以再次使用后期构建常规任务),但情况似乎也并非如此。

任何见解?在这一点上,在我看来,最好的办法是创建一个 Build Breaker 的变体,它只是报告警报但不会破坏构建,但如果可以避免的话,我宁愿不走自定义插件路线.

最佳答案

好的,我们已经满意地解决了这个问题,尽管它确实需要一个自定义的 Sonar 插件。

我们创建了一个 BuildBreaker 版本(我们称之为 BuildWarner)。唯一的区别(除了插件名称、包名称、类名称等)是 AlertThresholdChecker.java 的第 44 行更改为:

  fail("Alert thresholds have been hit (" + count + " times).");

到 :
  logger.info("SONARTHRESHOLDSEXCEEDED - Alert thresholds have been hit (" + count + " times).");

一旦在 Sonar 中运行,Jenkins 控制台将包含短语 SONATHRESHOLDSEXCEEDED 如果任何警报命中达到错误阈值级别。

然后,安装 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()
}

如果您愿意,也可以使用 Jenkins Text Finder 插件。

需要注意的是,Sonar 插件必须在 Groovy Post Build 或 Text Finder 插件之前。

希望这可以帮助其他人。

关于jenkins - 超出 Sonar 限制时使 Jenkins Build 不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513559/

相关文章:

java - jenkins k8s部署中的JAVA_OPTS,似乎未考虑-Xss(堆栈大小)

java - 在 SonarQube 中使用枚举错误计算开关条件

java - Tomcat 7 : Sonar compliant setHttpOnly(true) for Cookie

java - Sonar 3.7 : Unable to execute wih maven

jenkins - 如何在没有管道支持的情况下使用 Jenkins 插件?

ios - xcodebuild 无法连接到模拟器

ios - Jenkins iOS 构建错误 : no such module 'XXX'

jenkins - 已从 Google Cloud VM 中删除 authorized_keys

mysql - Openshift 上的 Jenkins-Sonar 通信

java - @Nullable 和 SonarQube 'Conditionally executed blocks should be reachable' 警告