分析具有指定质量门的手动添加的项目

Analysing manually added project with specified quality gate

我有兴趣通过 SonarQube 分析我的 Jenkins 构建。最初,我使用了以下代码

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

            sh 'mvn clean package sonar:sonar '

        }
      }
    }

但是,我已经询问 如何指定服务器用于我的分析的质量门。根据提供的答案,我已将代码修改为如下所示

stage('SonarCloud') {
      steps {
        withSonarQubeEnv('SonarQube') {
            
          script{
            def projectName = "Some-Exp"

            // Creating a fresh project and placing it on the server - Works fine
            sh "curl -u ${env.SONAR_AUTH_TOKEN} '${env.SONAR_HOST_URL}/api/projects/create' -d 'name=${projectName}&project=${projectName}&branch=${env.BRANCH_NAME}'"

            // Specifying Quality Gate that to be used when performing our analysis - Does not quite work
            sh "curl -u ${env.SONAR_AUTH_TOKEN} '${env.SONAR_HOST_URL}/api/qualitygates/select' -d 'gateId=2&projectKey=${projectName}'"

            // Analysing our project - Creates the entirely new project, much like the initial code did
            sh "mvn sonar:sonar -Dsonar.host.url=${env.SONAR_HOST_URL}"
          }
        }
      }
    }

该代码在 SonarQube 服务器上创建并放置了一个项目,但该项目仍然有一个默认的质量门,并且它不包含任何分析(事实上,当前代码创建的输出与 [=12 创建的输出相同) =] 我最初使用的行)。没有错误或任何东西。问题是代码没有按照我的意愿执行。

这个 提到我需要将我的项目添加到配置文件组,然后再对其进行分析(这很有意义)。尝试添加 sh "curl -u ${env.SONAR_AUTH_TOKEN} '${env.SONAR_HOST_URL}/api/qualityprofiles/add_project'" 和一些参数,但没有太大帮助。

我想知道我错过了什么。我认为最后一行需要参数化,但我找不到任何可以让它工作的东西。

我已经创建了一个示例 Maven 项目和 运行 来自 Jenkins 的声纳分析。另外,我已经使用 Web API 分配 QualityGate。

您可以使用下面的Jenkinsfile作为示例,进行声纳分析。

詹金斯文件

pipeline {
   agent any
tools {
                maven 'MAVEN_HOME1'
                }

   stages {
      stage('Git') {
         steps {
            git credentialsId: 'gitlab-test', url: 'https://example.com/gitlab/repo1/simple-java-maven-app.git'
         }
      }
      
      stage('Maven Install') {
          steps {
                          sh "mvn install"
                         }
      }
      
      stage('Create Sonar Proejct') {
          steps {
                sh 'curl -X POST -u "admin:admin" "https://example.com/sonarqube/api/projects/create?name=Whosebug&project=Whosebug"'
            }
      }
      
      stage('Set Quality Gate') {
          steps {
              sh 'curl -u "admin:admin" -X POST "https://example.com/sonarqube/api/qualitygates/select?projectKey=Whosebug&gateId=10100"'
          }
      }
      
      stage('Sonarqube Analysis') {
          steps {
              sh """mvn -U install sonar:sonar -Dsonar.host.url=https://example.com/sonarqube/ -Dsonar.login=7yha3f47967iuednd8cd -Dsonar.projectKey=Whosebug -Dsonar.projectName=Whosebug -Dsonar.sources=. -Dsonar.java.binaries=**/* -Dsonar.language=java -Dsonar.exclusions=src/test/java/com/mycompany/app/AppTest.java"""
          }
      }
   }
}

下面是SonarQube分析结果和其他截图,供大家参考。

截图:

Jenkins 控制台输出:

可用 QualityGate 列表:

Note: In the above image, "id":10040,"name":"SonarQube way" is the default QualityGate. I have used "id":10100,"name":"SASSonarQube way" for setting Quality Gate to analyze the project Whosebug using Web API. All are marked in yellow

SonarQube 分析

In above image, you can see the Quality Gate SASSonarQube way has been used to do sonar analysis. Marked in yellow