Jenkins 2.50中声明性管道中的以下SonarQube(6.3)分析阶段在控制台日志中失败并显示此错误:http://pastebin.com/t2ja23vC。更具体地说:
更改" SonarQube"此作业(SonarGate)中定义的SonarQube安装与任何已配置的安装都不匹配。可配置的安装数量:1。
更新:到#S; SonarGate"在Jenkins设置中(在SonarQube服务器下,所以它与Jenkins文件匹配),我得到一个不同的错误:http://pastebin.com/HZZ6fY6V
java.lang.IllegalStateException:无法获取SonarQube任务ID和/或服务器名称。请使用' withSonarQubeEnv'包装器来运行您的分析。
该阶段是SonarQube文档中示例的修改:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins#AnalyzingwithSonarQubeScannerforJenkins-AnalyzinginaJenkinspipeline
stage ("SonarQube analysis") {
steps {
script {
STAGE_NAME = "SonarQube analysis"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, don't analyze."
}
else { // this is a PR build, run sonar analysis
withSonarQubeEnv("SonarGate") {
sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner"
}
}
}
}
}
stage ("SonarQube Gatekeeper") {
steps {
script {
STAGE_NAME = "SonarQube Gatekeeper"
if (BRANCH_NAME == "develop") {
echo "In 'develop' branch, skip."
}
else { // this is a PR build, fail on threshold spill
def qualitygate = waitForQualityGate()
if (qualitygate.status != "OK") {
error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}"
}
}
}
}
}
我还使用网址sonarqube-webhook
创建了一个webhook http://****/sonarqube-webhook/
。应该是这样,还是http://****/sonarqube/sonarqube-webhook
?要访问服务器仪表板,我使用http://****/sonarqube
。
在SonarQube的Quality Gates部分,我创建了一个新的质量门:
我不确定SonarGate中的设置是否正确。我使用jenkins-mocha生成一个lcov.info文件,该文件在Sonar中用于生成覆盖数据。
质量门设置可能是错误的设置吗?如果不满足coverage%,最终结果是在Jenkins中失败。
最后,我不确定Jenkins系统配置中是否需要以下配置:
和
答案 0 :(得分:5)
SonarQube Jenkins插件扫描两个特定行的构建输出,用于获取SonarQube报告任务属性和项目URL。如果您sonar-scanner
的调用未输出这些行,则waitForQualityGate()
调用将没有任务ID来查找它们。因此,您必须找出正确的设置,以使其更加详细。
请参阅插件的SonarUtils课程中的extractSonarProjectURLFromLogs
和extractReportTask
方法,了解它们的工作原理:
ANALYSIS SUCCESSFUL, you can browse <project URL>
用于添加徽章的链接(在构建历史记录中)Working dir: <dir with report-task.txt>
用于将任务ID传递给waitForQualityGate
步骤答案 1 :(得分:3)
这是Jenkins的SonarQube扫描程序中发现的一个错误,当使用Jenkins从属作业时(如果作业在主服务器上运行,它就可以工作)。您可以在此处阅读更多内容:https://jira.sonarsource.com/browse/SONARJNKNS-282
我使用扫描仪插件v2.61的测试版本对此进行了测试,发现它正常工作。 解决方案是在发布时升级到v2.61。
然后这个阶段将起作用:
stage ("SonarQube analysis") {
steps {
withSonarQubeEnv('SonarQube') {
sh "../../../sonar-scanner-2.9.0.670/bin/sonar-scanner"
}
def qualitygate = waitForQualityGate()
if (qualitygate.status != "OK") {
error "Pipeline aborted due to quality gate coverage failure: ${qualitygate.status}"
}
}
}
答案 2 :(得分:0)
如果您在Docker容器中运行SonarCube,请检查内存是否耗尽。我们正在竭尽全力。似乎是问题所在。