Sonarqube 詹金斯根据声纳结果建造管道失败

Sonarqube 詹金斯根据声纳结果建造管道失败,sonarqube,jenkins-pipeline,devops,Sonarqube,Jenkins Pipeline,Devops,我已经创建了Jenkins build管道并配置了声纳,正如我在前面的一篇文章中所描述的那样 构建的控制台输出在其中提供了一个URL,我正在使用该URL检查声纳分析的结果。然而,我的要求是,根据Sonar发现的缺陷数量,如果发现特定数量的“x”个缺陷,它将无法通过Jenkins构建。请建议如何在管道中进行配置您应该: 在SonarQube服务器上配置并将其分配给项目 安装 考虑一下,在你的情况下,失败的工作是否是一个好的解决方案:我最近刚刚做了这件事。 因此,是的-您需要: 配置质量门 确保

我已经创建了Jenkins build管道并配置了声纳,正如我在前面的一篇文章中所描述的那样

构建的控制台输出在其中提供了一个URL,我正在使用该URL检查声纳分析的结果。然而,我的要求是,根据Sonar发现的缺陷数量,如果发现特定数量的“x”个缺陷,它将无法通过Jenkins构建。请建议如何在管道中进行配置

您应该:

  • 在SonarQube服务器上配置并将其分配给项目
  • 安装


  • 考虑一下,在你的情况下,失败的工作是否是一个好的解决方案:

    我最近刚刚做了这件事。 因此,是的-您需要:

    • 配置质量门
    • 确保声纳上有可用的构建断路器:
      如果项目未通过其质量关卡,则中断分析仪

    您可以尝试直接从管道脚本执行此操作:

    def scannerHome = tool 'SonarQube Scanner';
    withSonarQubeEnv('SonarQube') {
        sh "${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=advant-web -Dsonar.sources=. -Dsonar.exclusions=node_modules/**,build/** -Dsonar.projectVersion=1.0.${BUILD_NUMBER}"
    }
    sleep 10
    sh "curl -u user:password -X GET -H 'Accept: application/json' http://localhost:9000/api/qualitygates/project_status\\?projectKey\\=my-project > status.json"
    def json = readJSON file:'status.json'
    echo "${json.projectStatus.status}"
    if ("${json.projectStatus.status}" == "ERROR") {
        currentBuild.result = 'FAILURE'
        error('SonarQube quality gate status of a project is invalid.')
    }
    
    如果Jenkins的SonarQube Scanner升级至2.61,您可以编写如下内容:

    ...
    timeout(time: 5, unit: 'MINUTES') {
        def qualitygate = waitForQualityGate()
        if (qualitygate.status != "OK") {
            error "Pipeline aborted due to quality gate coverage failure."
        }
    }
    
    您可以在此处阅读更多内容: