我在jenkins管道中使用了sonarQube。我已经在jenkins中安装了所有与sonarqube相关的插件。在jenkins配置系统中,我正确配置了sonarqube服务器,并且在jenkins全局工具配置中正确配置了SonarQube Scanner。
这是詹金斯管道代码..
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。但是,当我建立工作时,三个阶段的waitForQualityGate()不会将 ok 状态返回给jenkins,而是显示 在服务器“ sonarqube”上检查SonarQube任务“ AWrQj5In7abK9JVZ9”的状态 SonarQube任务“ AWrQj5In7abK9JVZ9”的状态为“ IN_PROGRESS”
,并且它正在继续加载,尚未完成。当我检入sonarqube服务器时,它显示响应:服务器不可达。我不在本地运行sonarqube,而是在 docker 上运行。可能是什么问题?
答案 0 :(得分:2)
按照官方文档here和here的建议,通过在SonarQube Server上配置Jenkins实例的Webhook,我能够使waitForQualityGate()正常工作。
在SonarQube服务器配置中添加格式为<your-jenkins-instance>/sonarqube-webhook/
的Webhook,指向您的Jenkins实例。请注意,斜杠很重要。
答案 1 :(得分:1)
配置SonarQube Webhook进行质量控制
管理>配置> Webhooks>创建
URL应指向您的Jenkins服务器http://{JENKINS_HOST}/sonarqube-webhook/
这为我解决了。因为我不知道这个钩子。配置完此功能后,一切都会顺利进行。
答案 2 :(得分:0)
尝试在检查前放置 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}"
}
}
它为我解决了同样的问题。