[英]SonarQube does not return status of waitForQualityGate() to jenkins?
我在 jenkins 管道中使用了 sonarQube。 我已经在jenkins中安装了所有与sonarqube相关的插件。在jenkins配置系统中,我正确配置了sonarqube服务器和jenkins全局工具配置我正确配置了SonarQube Scanner。
这是 jenkins 管道代码..
node{
stage('git checkout process'){
echo 'started checkout'
git 'https://github.com/ramkumar/sampleproject'
echo 'completed sucessfully'
}
stage('compile package'){
def mvnTool = tool name: 'Maven', type: 'maven'
sh "${mvnTool}/bin/mvn clean install"
}
stage('SonarQube analysis') {
withSonarQubeEnv('sonarqube') {
mvnHome = '/opt/apache-maven/bin'
sh "${mvnHome}/mvn sonar:sonar"
}
}
stage("Quality Gate"){
timeout(time: 1, unit: 'HOURS') {
def qg = waitForQualityGate()
if (qg.status != 'OK') {
emailext body: 'Your code was failed due to sonarqube quality gate', subject: 'Jenkins Failed Report', to: 'prakashpp666666@gmail.com'
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
我还在 sonarqube 中配置了 webhooks。但是当我构建作业时,3 阶段的 waitForQualityGate() 没有将ok状态返回到 jenkins,而是显示Checking status of SonarQube task 'AWrQj5In7abK9JVZ9' on server 'sonarqube' ‘88195818 taskJ5AIn17928正在处理'
并且它不断加载它没有完成。 当我签入 sonarqube 服务器时,它显示Response: Server Unreachable 。 我没有在本地运行 sonarqube 它在docker上运行。 可能是什么问题?
为质量门配置 SonarQube webhook
管理 > 配置 > Webhook > 创建
该 URL 应指向您的 Jenkins 服务器http://{JENKINS_HOST}/sonarqube-webhook/
这为我解决了。 因为我不知道这个钩子。 一旦我配置了这个,一切都很顺利。
尝试在检查之前放置sleep(60)命令:
sleep(60)
timeout(time: 1, unit: 'MINUTES') {
def qg = waitForQualityGate()
print "Finished waiting"
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
它为我解决了同样的问题。
我遇到了类似的问题。 在我的例子中,这是因为 SonarQube 服务器 URL 中有一个额外的斜线 (/)。我的 Jenkins -> 配置系统 -> SonarQube 服务器 -> 服务器 URL 配置为http://sonarip:9000/
一旦我删除尾部斜杠并将其更改为http://sonarip:9000
, waitForQualityGate
开始按预期工作。
受到一篇关于该主题的好文章的启发,我能够将我的特定问题(与此处描述的症状相同)缩小到SonarQube webhook 安全性:
因此,即使您的问题不完全是这个问题,我强烈建议您同时查看 Jenkins 和 SonarQube 设置,因为根本原因可能很简单......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.