繁体   English   中英

SonarQube不返回waitForQualityGate()状态给jenkins?

[英]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}"
    }
}  

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

正如官方文档herehere中所建议的那样,我能够通过为SonarQube Server上的Jenkins实例配置一个webhook来让waitForQualityGate()正常工作。

在您的 SonarQube 服务器配置中添加您的<your-jenkins-instance>/sonarqube-webhook/ ,指向您的 Jenkins 实例。 请注意尾部斜杠很重要。

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

我通过在 SonarQube 中创建一个 webhook 解决了这个问题。

  1. 在您的项目/项目设置中,选择Webhooks

在此处输入图像描述

  1. 将网址设置为https://YOUR_JENKINS_URL/sonarqube-webhook/

ps:如果您从 SQ 错误地得到 FAIL,请验证您的 SonarQube 服务器的 url(在 Jenkins 设置中)不以 '/' 结尾

受到一篇关于该主题的好文章的启发,我能够将我的特定问题(与此处描述的症状相同)缩小到SonarQube webhook 安全性

  1. 转到管理 Jenkins配置系统SonarQube 服务器高级...
  2. Webhoot Secret设置为SonarQube webhook secret

因此,即使您的问题不完全是这个问题,我强烈建议您同时查看 Jenkins 和 SonarQube 设置因为根本原因可能很简单......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM