【问题标题】:Failing a Jenkins build pipeline based on Sonar Results基于声纳结果的 Jenkins 构建管道失败
【发布时间】:2017-05-22 06:42:14
【问题描述】:

我已经创建了一个 Jenkins 构建管道并配置了 SOnar,正如我在之前的 questions 中描述的那样。

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

【问题讨论】:

    标签: sonarqube jenkins-pipeline devops


    【解决方案1】:

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

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

    或者如果将 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."
        }
    }
    

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

    【讨论】:

      【解决方案2】:

      你应该:

      1. 在 SonarQube 服务器上配置 Quality Gate 并将其分配给项目
      2. 安装SonarQube Build Breaker Plugin

      考虑在您的情况下失败的作业是否是一个好的解决方案:https://blog.sonarsource.com/why-you-shouldnt-use-build-breaker/

      【讨论】:

        【解决方案3】:

        我最近才这样做。 所以是的 - 你需要:

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

        【讨论】:

          【解决方案4】:

          对于那些仍在搜索它的人,我一直在寻找一个类似的解决方案,尤其是可以通过 Maven 使用。我实现了两个解决方案:

          1. 您可以设置sonar.qualitygate.wait=true。然后,它将等待质量门响应。 最终的 Maven 运行将如下所示:

            mvn 验证声纳:声纳 -Dsonar.qualitygate.wait=true

          仅当您的 Sonar Qube Server 版本高于 8.1 时,这才有效。

          参考:Sonar Qube Official Documentation

          1. 如果你的版本低于8.1,那么你可以使用下面的maven插件

                    <plugin>
                        <groupId>io.github.r0bb3n</groupId>
                        <artifactId>sonar-quality-gate-maven-plugin</artifactId>
                        <version>1.1.0</version>
                    </plugin>
            

          然后,您将运行以下 Maven 命令:

          mvn sonar-quality-gate:check
          

          参考:Sonar Quality Gate Plugin

          【讨论】:

            猜你喜欢
            • 2016-06-21
            • 1970-01-01
            • 1970-01-01
            • 2020-07-21
            • 2017-02-19
            • 2014-07-19
            • 1970-01-01
            • 2015-09-08
            • 1970-01-01
            相关资源
            最近更新 更多