如何在没有 Maven 和 Docker 的情况下在 Jenkins 声明式管道中执行 SonarQube 扫描器

How to execute SonarQube scanner in Jenkins Declarative Pipeline without Maven and Docker

SonarQube 扫描器是否支持没有 maven 的 BlueOcean 管道插件,docker,如果支持,脚本在 Jenkinsfile 中如何工作?

我是 Jenkins 和 BlueOcean 的新手,已经尝试了所有可用的基本方面。

如果 SonarQube 插件确实支持声明式:

pipeline {
  agent any
  stages {
    stage('SonarQube analysis') {
      tools {
        sonarQube 'SonarQube Scanner 2.8'
      }
      steps {
        withSonarQubeEnv('SonarQube Scanner') {
          sh 'sonar-scanner'
        }
      }
    }
  }
}

我们不能说SonarQube扫描仪支持或不支持BlueOcean。 BlueOcean 是一个表示层,显示阶段提供的数据(例如:日志)。

SonarQube 扫描仪生成日志,因此 BlueOcean 可以显示它。我不认为这种类型的关系可以归类为"support of"。


编辑:

您可以使用以下代码在声明式管道中执行分析:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                def scannerHome = tool 'SonarQubeScanner3'
                withSonarQubeEnv('SonarQube') {
                    sh "${scannerHome}/bin/sonar-scanner"
                }
            }
        }
    }
}

您还在 Manage Jenkins → Configure System → SonarQube servers 中添加了一个 SonarQube 服务器:

Manage Jenkins → Global Tool Configuration → SonarQube Scanner 中的 SonarQube 扫描仪:

姓名:

  • 服务器必须与 withSonarQubeEnv 中使用的相同(在我的示例中它等于 "SonarQube")
  • 扫描仪工具必须与 tool 中使用的相同(在我的示例中它等于 "SonarQubeScanner3")

您还必须选中复选框 Enable injection of SonarQube server configuration as build environment variables

解决了,只需要检查一般工具配置中的工具位置,并提供路径并在 jenkins 文件中调用它。

 stage('PDNS-UI-Sonar') { 
         environment {
             SONAR_SCANNER_OPTS = "-Xmx2g"
             } 
         steps {
             sh "pwd"
             sh "/opt/sonar-scanner/bin/sonar-scanner -Dproject.settings=sonar-project.properties"
             }
         }

enter image description here