我在Jenkins管道中使用了SonarQube。我已经在Jenkins安装了所有与sonarqube相关的插件。在jenkins configure系统中,我正确配置了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,而是显示正在检查服务器'sonarqube' SonarQube任务'AWrQj5In7abK9JVZ9'上的SonarQube任务'AWrQj5In7abK9JVZ9'的状态为'IN_PROGRESS'
而且它在不断地加载,它没有完成。当我检查sonarqube服务器时,它显示响应:无法访问服务器。我不是在本地运行sonarqube,它是在docker上运行的。可能有什么问题?
7条答案
按热度按时间ndasle7k1#
配置SonarQube webhook质量门
管理〉配置〉Webhooks〉创建
URL应指向Jenkins服务器
http://{JENKINS_HOST}/sonarqube-webhook/
我的问题解决了。因为我不知道这个钩子。一旦我配置了这个,一切都很顺利。
tvmytwxo2#
尝试在检查前放**sleep(60)**命令:
它为我解决了同样的问题。
koaltpgm3#
正如官方文档here和here中所建议的那样,我能够通过在SonarQube Server上配置一个Webhook到Jenkins示例来使waitForQualityGate()正常工作。
在SonarQube服务器配置中添加一个
<your-jenkins-instance>/sonarqube-webhook/
形式的webhook,指向Jenkins示例。注意后面的斜线很重要。a2mppw5e4#
我遇到了类似的问题。在我的例子中,这是因为SonarQube服务器URL中的一个额外的斜杠(/)。我的Jenkins -〉配置系统-〉SonarQube服务器-〉服务器URL被配置为
http://sonarip:9000/
一旦我删除了尾部的斜杠并将其更改为
http://sonarip:9000
,waitForQualityGate
就开始按预期工作了。mw3dktmi5#
我通过在SonarQube中创建一个webhook解决了这个问题。
1.在您的项目/项目设置中,选择***Webhooks***
1.设置URL为https://YOUR_JENKINS_URL/sonarqube-webhook/
fwzugrvs6#
受a nice article on the subject的启发,我能够将我的特定问题(具有此处描述的相同 * 症状 )缩小到SonarQube webhook安全性:
1.转到 Manage Jenkins → Configure System → SonarQube servers → Advanced。.. *
1.将 Webhoot Secret 设置为SonarQube webhook secret
所以,即使你的问题不完全是这一个,我强烈建议审查Jenkins和SonarQube设置一起因为根本原因可能是简单的东西。..
nukf8bse7#
这个问题用三种方法解决了。
1.我的Jenkins -〉Configure System -〉SonarQube servers -〉Server URL配置为http://sonarip:9000/。一旦我删除了结尾的斜杠并将其更改为http://sonarip:9000,waitForQualityGate就开始按预期工作了。
1.在sonarqube上创建了webhook,转到管理员-〉配置-〉webhook -〉http://jenkinsserverip/sonarqube-webhook/
1.为webhook创建一个秘密,并在jenkins中进行配置