代码之家  ›  专栏  ›  技术社区  ›  Homewrecker

无法在Jenkins声明性管道中运行SonarQu

  •  2
  • Homewrecker  · 技术社区  · 6 年前

    我遵循了以下网站提供的文档: https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

    然而,我无法让它工作。 首先,由于示例中的语法错误,文档似乎需要更新。在最新版本的声明性管道中, steps 必须在 stage -标签。 还有 def -关键字仅在其位于 script -标签。

    除此之外,当运行下面的Jenkins文件时,我会收到一个NPE:

    java.lang.NullPointerException
        at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:150)
        at org.jenkinsci.plugins.workflow.steps.ToolStep$Execution.run(ToolStep.java:133)
        at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:49)
        at hudson.security.ACL.impersonate(ACL.java:290)
        at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:46)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    

    詹金斯档案

    pipeline {
      environment {
        scannerHome = tool 'SonarQube Scanner 3.2.0.1227'
      }
      agent {
        node {
          label "master"
        }
      }
    
      options {
        buildDiscarder logRotator(daysToKeepStr: '7')
      }
    
      stages {
        stage("Sonarqube analysis") {
          steps {
            withSonarQubeEnv('SonarQube Scanner') {
              bat "${scannerHome}/bin/sonar-scanner"
            }
          }
        }
    
    • 詹金斯:v2。107.3
    • 用于Jenkins插件的SonarQube扫描仪:V2.7.1
    • SonarQube扫描仪:3.2.0.1227(设置为在全局工具配置中自动安装)
    • 在主服务器上运行作业(Windows Server 2012 R2)
    1 回复  |  直到 6 年前
        1
  •  0
  •   Homewrecker    6 年前

    修复了以下问题:

    pipeline {
      agent {
        node {
          label "master"
        }
      }
    
      stages {
        stage("SonarQube analysis") {
           steps {
              script {
                  def sonarScanner = tool name: 'SonarQube', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
                  bat "${sonarScanner}/bin/sonar-scanner -e -Dsonar.host.url=xxx"
                }
             }
          }
        }
      }