基于Sonar结果的Jenkins构建管道失败

use*_*011 3 sonarqube devops jenkins-pipeline

我已经创建了一个Jenkins构建管道并配置了SOnar,如我先前的问题之一所述。

构建的控制台输出在其中提供了一个URL,我将使用该URL检查Sonar Analysis的结果。但是,我的要求是,根据Sonar发现的缺陷数量,如果没有特定的“ x”号,它将使Jenkins构建失败。发现缺陷。请提出如何在管道中进行配置

小智 5

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

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.')
}
Run Code Online (Sandbox Code Playgroud)

或将SonarQube Scanner for Jenkins升级到2.61时,您可以编写以下内容:

...
timeout(time: 5, unit: 'MINUTES') {
    def qualitygate = waitForQualityGate()
    if (qualitygate.status != "OK") {
        error "Pipeline aborted due to quality gate coverage failure."
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读更多信息:https : //docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins