当质量门失败时,如何使 Maven 构建失败?

Posted

技术标签:

【中文标题】当质量门失败时,如何使 Maven 构建失败?【英文标题】:How to fail a maven build, when quality gate fails? 【发布时间】:2020-07-14 12:27:57 【问题描述】:

之前我使用sonar-maven-plugin version 3.2,然后当声纳质量门失败时,构建也会失败。现在我正在使用sonar-maven-plugin version 3.7.0.1746,但事实并非如此。即使质量门失败,maven 构建也成功。现在,当我在 pom.xml 中使用 3.2 版时,它会给出错误

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar (default-cli) on project maven-webapp: Unable to execute SonarQube: Fail to download libraries from server -> [Help 1]

虽然使用sonar-maven-plugin version 3.7.0.1746 不会出现上述错误。

这就是我在 Pom.xml 中添加插件的方式

<plugin>
     <groupId>org.sonarsource.scanner.maven</groupId>
     <artifactId>sonar-maven-plugin</artifactId>
     <version>3.2</version>
</plugin>

我还了解到,在 3.2 版中,有一些工作后操作,例如 org.sonar.plugins.buildbreaker.QualityGateBreaker

现在怎么办? 我将https://sonarcloud.io/ 用于声纳。

【问题讨论】:

如果您找到解决方案,请告诉我们。 我猜这是设计上的改变。至少看起来他们改变了 Jenkins 集成功能,因为 SonarQube 的根本变化使其成为一种不好的使用模式。请参阅:blog.sonarsource.com/why-you-shouldnt-use-build-breaker 此外,他们(重新)为 Jenkins 管道引入了不同的实现:blog.sonarsource.com/… 不过,这些都不完全涵盖 Maven,也不包括 Sonar Cloud。 【参考方案1】:

如果Sonar Qube Server版本大于8.1,可以使用sonar.qualitygate.wait=true

mvn verify sonar:sonar -Dsonar.qualitygate.wait=true

否则,有一个maven插件来检测Sonar Quality Gate Result:

 <plugin>
        <groupId>io.github.r0bb3n</groupId>
        <artifactId>sonar-quality-gate-maven-plugin</artifactId>
        <version>1.1.0</version>
  </plugin>

然后,您将运行以下 Maven 命令:

mvn sonar-quality-gate:check

【讨论】:

以上是关于当质量门失败时,如何使 Maven 构建失败?的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube 中的质量门故障不会导致 Teamcity 中的构建失败

当达到测试超时时,Maven 肯定会失败构建,即使失败时设置为 true

如果某个工件已经存在,如何使 Maven 构建失败

如果 JUnit 覆盖率低于某个阈值,如何使 Maven 构建失败

SonarQube 7.1 和 TFS 2018 发布质量门结果失败

不满足成功条件时,质量之门不会失败