我在TeamCity中设置了一个构建项目,并将其与Sonarqube集成在一起。该项目正在构建中,甚至在SonarQube控制台中成功发布了报告。但是,当质量门失败时,它并没有破坏构建。我搜索并阅读了有关构建断路器的信息,但本文档https://confluence.jetbrains.com/display/TW/SonarQube+Integration已经支持TeamCity的Sonarqube插件
我是不是遗漏了一些需要配置的东西/或者有什么问题?我试着搜索了很多,但没有找到任何适当的文档或线索。
发布于 2018-10-01 15:56:29
是的,我必须使用退出状态来编写一个自定义脚本来中断构建。我使用API来分析QG的状态。
PROJECTKEY="%teamcity.project.id%"
QGSTATUS=`curl -s -u SONAR_TOKEN: http://SONAR_URL:9000/api/qualitygates/project_status?projectKey=$PROJECTKEY | jq '.projectStatus.status' | tr -d '"'`
if [ "$QGSTATUS" = "OK" ]
then
exit 0
elif [ "$QGSTATUS" = "ERROR" ]
then
exit 1
fi 发布于 2018-09-29 03:10:05
当质量门失败时,SonarQube插件不会破坏构建。为什么?这里描述了所有内容:Why You Shouldn't Use Build Breaker
主要结论是:
...SonarSource不想继续该功能。..。
一旦我们开始使用墙板,我们就不再使用Build Breaker插件,但仍然相信使用它是一种不错的做法。然后是SonarQube 5.2,它切断了分析器和数据库之间的连接。这次裁剪带来了很多好处,包括架构上的重大变化:源代码分析在分析器端完成,所有聚合数计算现在都在服务器端完成。这意味着…分析员不再知道质量门的事了。只有服务器执行此操作,并且由于分析报告是按顺序处理的,因此可能需要一段时间才能获得作业的Quality Gate结果。
换句话说,从我们的角度来看,Build Breaker特性不再有意义。
你必须自己去验证质量关口的状态。你可以在这里阅读如何做:Access quality gate status from sonarqube api
xpmatteo问题的答案:
我是唯一一个发现很难理解引用的解释的人吗?
您有两个工具。SonarScanner和SonarQube。
1)在CI服务器上执行SonarScanner。它分析源代码,并将分析结果推送到SonarQube服务器。
2) SonarQube服务器处理数据,并知道新的更改是否通过质量门。
SonarScanner不知道最终结果(通过或不通过),所以它不能使构建失败(它在SQ5.2之前就有这样的信息,因为它正在处理所有数据并只将结果推送到数据库)。这意味着Build Breaker插件毫无意义,因为由于当前的设计,它将无法工作。执行SonarScanner后,您必须轮询服务器并检查质量门状态。然后,您可以决定构建是否应该失败。
发布于 2020-02-19 00:16:10
我设法使用sonar.qualitygate.wait=true参数使基于Quality Gate设置的构建失败。
在他们的GitLab管道示例页面上有一个示例:https://docs.sonarqube.org/latest/analysis/gitlab-cicd/
https://stackoverflow.com/questions/52530153
复制相似问题