SonarQube不向jenkins返回waitForQualityGate()的状态?

ohfgkhjo  于 2023-04-29  发布在  Jenkins
关注(0)|答案(7)|浏览(432)

我在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上运行的。可能有什么问题?

ndasle7k

ndasle7k1#

配置SonarQube webhook质量门

管理〉配置〉Webhooks〉创建
URL应指向Jenkins服务器http://{JENKINS_HOST}/sonarqube-webhook/
我的问题解决了。因为我不知道这个钩子。一旦我配置了这个,一切都很顺利。

tvmytwxo

tvmytwxo2#

尝试在检查前放**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}"
    }
}

它为我解决了同样的问题。

koaltpgm

koaltpgm3#

正如官方文档herehere中所建议的那样,我能够通过在SonarQube Server上配置一个Webhook到Jenkins示例来使waitForQualityGate()正常工作。
在SonarQube服务器配置中添加一个<your-jenkins-instance>/sonarqube-webhook/形式的webhook,指向Jenkins示例。注意后面的斜线很重要。

a2mppw5e

a2mppw5e4#

我遇到了类似的问题。在我的例子中,这是因为SonarQube服务器URL中的一个额外的斜杠(/)。我的Jenkins -〉配置系统-〉SonarQube服务器-〉服务器URL被配置为http://sonarip:9000/
一旦我删除了尾部的斜杠并将其更改为http://sonarip:9000waitForQualityGate就开始按预期工作了。

mw3dktmi

mw3dktmi5#

我通过在SonarQube中创建一个webhook解决了这个问题。
1.在您的项目/项目设置中,选择***Webhooks***

1.设置URL为https://YOUR_JENKINS_URL/sonarqube-webhook/

  • p.s:* 如果您错误地从SQ获得FAIL,请验证SonarQube服务器的URL(在Jenkins设置中)不以'/'结尾
fwzugrvs

fwzugrvs6#

a nice article on the subject的启发,我能够将我的特定问题(具有此处描述的相同 * 症状 )缩小到SonarQube webhook安全性
1.转到 Manage JenkinsConfigure SystemSonarQube serversAdvanced。.. *
1.将 Webhoot Secret 设置为
SonarQube webhook secret

所以,即使你的问题不完全是这一个,我强烈建议审查Jenkins和SonarQube设置一起因为根本原因可能是简单的东西。..

nukf8bse

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中进行配置

相关问题