简体   繁体   English

Sonarqube 质量门状态检查在 Jenkins 管道中失败

[英]Sonarqube quality gate status check fail in Jenkins pipeline

Im new to jenkins pipeline scripting and sonarqube.我是 jenkins 流水线脚本和 sonarqube 的新手。 it would be great if I can get some help with the question below.如果我能在下面的问题上得到一些帮助,那就太好了。 I want to fail the Jenkins declarative pipeline job when quality gate check fails.当质量门检查失败时,我想使 Jenkins 声明性管道作业失败。 As per sonar documentation ( https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6 ), I tried with below two scenrions but both are seems not working and failing with errors.根据声纳文档( https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6 ),我尝试了以下两个场景,但两者似乎都没有工作并且出现错误。 sonarqube analysis is working fine but it failing at QualityGate check. sonarqube 分析工作正常,但在 QualityGate 检查中失败。 I created webhook in sonarserver which is returning json output.我在返回 json output 的声纳服务器中创建了 webhook。 Not sure what Im missing here.不知道我在这里缺少什么。 Version I using Sonrscanner version - 3.0.0.702版本 I 使用 Sonrscanner 版本 - 3.0.0.702

scenario 1:场景1:

Getting error “Invalid parameter “abortPipeline”, did you mean “null”?”收到错误“无效参数“abortPipeline”,您的意思是“null”吗?” when run below code.在以下代码运行时。 I saprated with我用

stage('Sonarqube Analysis') {
            environment {
                scannerHome = tool 'ALM Sonar'
            }
            steps {
                withSonarQubeEnv('ALM Prod Sonar') {
                    sh "${scannerHome}/bin/sonar-scanner"
                }
            }
        }
        stage("Quality Gate") {
            steps {
                timeout(time: 1, unit: 'HOURS') {
                waitForQualityGate abortPipeline: true }
            }
        }

scenario 2:场景2:

Getting error “Invalid JSON String”.出现错误“无效的 JSON 字符串”。 Below analysis, its going till the “test2” further its failing to read status waitForQualityGate().在下面的分析中,直到“test2”进一步它未能读取状态waitForQualityGate()。 Please advise.请指教。 I put the script quality gate in saparate stage still its failing with same error.我将脚本质量门置于单独的阶段仍然失败并出现相同的错误。

stage('Sonarqube Analysis') {
            environment {
                scannerHome = tool 'ALM Sonar'
            }
            steps {
                withSonarQubeEnv('ALM Prod Sonar') {
                    sh "${scannerHome}/bin/sonar-scanner"
                  }
                sleep time: 30000, unit: 'MILLISECONDS'
                echo "test1"
                script {
                        echo "test2"
                        def qg = waitForQualityGate()
                        if (qg.status != 'OK') {
                            error "Pipeline aborted due to quality gate failure: ${qg.status}"
                            echo "test3" }
                    }
                }
        }

You can try below code as a work around.您可以尝试以下代码作为解决方法。

stage('Sonarqube Analysis') {
            environment {
                scannerHome = tool 'Sonar scanner'
            }
            steps {
                withSonarQubeEnv('Sonarserver') {
                    sh "${scannerHome}/bin/sonar-scanner"
                  }
                if ("${json.projectStatus.status}" == "ERROR") {
                            currentBuild.result = 'FAILURE'
                            error('Pipeline aborted due to quality gate failure.')
                    }

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

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