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

时间:2020-04-08 16:45:13

标签: jenkins sonarqube jenkins-pipeline

Jenkins管道脚本和sonarqube是新手。如果我能在下面的问题上得到一些帮助,那将是很好的。 当质量门检查失败时,我想使Jenkins声明式管道作业失败。根据声纳文档(https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/#header-6),我尝试使用以下两个场景,但两个场景似乎都无法正常工作,并因错误而失败。 声纳分析工作正常,但在QualityGate检查中失败。我在sonarserver中创建了webhook,该webhook返回了json输出。不知道我在这里缺少什么。 我使用Sonrscanner版本的版本-3.0.0.702

场景1:

获取错误“参数“ abortPipeline”无效,您的意思是“空”吗?”当运行下面的代码。我对

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 }
            }
        }

场景2:

正在获取错误“无效的JSON字符串”。经过分析,直到“ test2”,它仍无法读取状态waitForQualityGate()。请指教。 我将脚本质量门置于saparate阶段,但仍然失败,并出现相同的错误。

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" }
                    }
                }
        }

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下代码作为替代方案。

stage('Sonarqube Analysis') {
            environment {
                scannerHome = tool 'Sonar scanner'
            }
            steps {
                withSonarQubeEnv('Sonarserver') {
                    sh "${scannerHome}/bin/sonar-scanner"
                  }
                sleep time: 30000, unit: 'MILLISECONDS'
                script {
                        sh "curl -u username:password -X GET -H 'Accept: application/json' https://alm.accenture.com/sonar/api/qualitygates/project_status?projectKey=adop:SDSPDVCR:baggagetracking > status.json"
                        def json = readJSON file:'status.json'
                        echo "${json.projectStatus.status}"
                        if ("${json.projectStatus.status}" == "ERROR") {
                            currentBuild.result = 'FAILURE'
                            error('Pipeline aborted due to quality gate failure.')
                    }
相关问题