在 Jenkinsfile 中为 SonarQube 分析选择质量门

Selecting Quality Gate for SonarQube Analysis in Jenkinsfile

我有一个 Jenkinsfile,除其他外,它对我的​​构建执行 SonarQube 分析并通过 'Quality Gate' 阶段。分析放在 SonarQube 服务器上,我可以在其中看到所有详细信息。分析和质量门的相关代码如下(不是我的,来自documentation):

stage('SonarCloud') {
      steps {
        withSonarQubeEnv('SonarQube') {

            sh 'mvn clean package sonar:sonar '

        }
      }
    }

stage("Quality Gate") {
      steps {
        timeout(time: 15, unit: 'MINUTES') { // If analysis takes longer than indicated time, then build will be aborted
            waitForQualityGate abortPipeline: true
            script{
                def qg = waitForQualityGate() // Waiting for analysis to be completed
                if(qg.status != 'OK'){ // If quality gate was not met, then present error
                    error "Pipeline aborted due to quality gate failure: ${qg.status}"
                }
            }
        }
      }
    }

目前,一旦分析完成并放置在服务器上,它就会使用服务器的默认质量门。我想知道在进入 'Quality gate' 阶段之前,我是否可以指定在我的分析中使用哪个质量门? (我设置了另一个质量门,具有不同的验收标准,我想将其用于 'Quality Gate' 阶段)。

无法更改默认质量门,因为其他人正在使用它(因此我设置了自己的质量门)。

我查看了 'ceTaskUrl' link,可以在报告-task.txt 文件中找到,但没有深入研究(我看不到任何变量,并使用 select 质量门)。

我也找到了这个Jenkinsfile。我尝试使用它的一些代码,并在其上进行额外的谷歌搜索,希望访问和更改质量门,但也没有取得太大进展。

值得一提的是,我在我使用的SonarQube服务器上没有管理员权限。但是,我可以请求根据需要配置新的质量门,以备不时之需。

您可以使用 WebAPI 执行此操作,但为此您需要 Administer Quality Gate 权限。

请在此答案中找到更多详细信息。

How to assign Quality Gate dynamically to project from the script [SonarQube 6.5]?

或者如果您没有获得适当的许可,则替代方法是使用 sonarqube UI,您可以在其中指定哪个质量门应该用于哪个项目。