基于Sonar Results失败Jenkins构建管道

时间:2017-01-07 16:32:49

标签: sonarqube jenkins-pipeline devops

我创建了一个Jenkins构建管道,并按照我之前的questions中的描述配置了SOnar。

构建的控制台输出在其中提供了我用于检查声纳分析结果的URL。但是,我的要求是,根据Sonar发现的缺陷数量,如果特定的' x'没有。发现了缺陷。请建议如何在管道中配置

3 个答案:

答案 0 :(得分:2)

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

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.')
}

或者如果升级SonarsQube 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."
    }
}

您可以在这里阅读更多内容: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

答案 1 :(得分:1)

你应该:

  1. 在SonarQube服务器上配置Quality Gate并将其分配给项目
  2. 安装SonarQube Build Breaker Plugin
  3. 考虑失败的工作是否是一个很好的解决方案:https://blog.sonarsource.com/why-you-shouldnt-use-build-breaker/

答案 2 :(得分:0)

我最近刚刚完成了这件事。 所以是的 - 你需要:

  • 配置质量门
  • 确保您的声纳可以使用构建断路器:Build Breaker Break the analyzer if the project does not pass its Quality Gate