【问题标题】:How to execute SonarQube scanner in Jenkins Declarative Pipeline without Maven and Docker如何在没有 Maven 和 Docker 的 Jenkins 声明式管道中执行 SonarQube 扫描仪
【发布时间】:2018-07-11 11:47:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jenkins sonarqube sonarqube-scan jenkins-blueocean


    【解决方案1】:

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

    SonarQube 扫描仪生成日志,因此 BlueOcean 可以显示它。我不认为这种关系可以归类为“支持”。


    编辑:

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

    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

    【讨论】:

    • 谢谢,但重点是如果 BlueOcean 可以显示日志,我们需要一个 SonarQube 的声明性语法脚本作为它的 Jenkins 文件,因为我已经尝试了几乎 6-8 个不同的程序(上面共享)来调用它但没有一个工作。
    • 正如我所写,BuleOcean 是一个 persentaion 层,您的问题与声明性管道或脚本化管道有关。
    • 感谢您的帮助,我尝试了与您建议的完全相同的程序,但是输出出现错误,您能帮我解决一下吗:`java.lang.NullPointerException org.jenkinsci.plugins.workflow.steps .ToolStep$Execution.run(ToolStep.java:150) org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
    • 您确定 SonaRube 步骤会产生错误吗?请编辑您的问题和所有重要数据(堆栈跟踪。完整的管道脚本、配置屏幕截图等)
    • 这几乎可以工作,您需要使用查看脚本步骤(请参阅此处:stackoverflow.com/questions/42763384/…)并且不要忘记项目根目录下的 sonar-project.properties 文件
    【解决方案2】:

    解决了只需要检查通用工具配置中的工具位置并给出路径并在 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

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 2016-12-10
      • 2021-07-05
      • 2020-05-25
      • 2021-10-29
      • 1970-01-01
      • 2017-01-19
      • 2017-02-06
      • 2017-08-19
      相关资源
      最近更新 更多