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

2024-05-17

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

场景1:

收到错误“参数“abortPipeline”无效,您的意思是“null”吗?”当运行下面的代码时。我与

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()。请指教。 我将脚本质量门放在单独的阶段仍然失败并出现相同的错误。

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

您可以尝试下面的代码作为解决方法。

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.')
                    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 管道中的 Sonarqube 质量门状态检查失败 的相关文章

随机推荐