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

13,498

Solution 1

it is solved one just need to check the tool location in general tool configs and give the path adn call it in jenkins file.

 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

Solution 2

We cannot say that the SonarQube scanner supports or does not support BlueOcean. BlueOcean is a presentation layer which displays data provided by stages (example: logs).

SonarQube scanner generates logs, so BlueOcean can displays it. I do not think that this type of relationship can be classified as a "support of".


EDIT:

You can execute an analysis in Declarative Pipeline by using the following code:

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

You have also add a SonarQube server in Manage Jenkins → Configure System → SonarQube servers:

SonarQube servers

and SonarQube scanner in Manage Jenkins → Global Tool Configuration → SonarQube Scanner:

SonarQube scanner

The name of the:

  • server must be the same as used in the withSonarQubeEnv (in my example it is equal to "SonarQube")
  • scanner tool must be the same as used in the tool (in my example it is equal to "SonarQubeScanner3")

You also have to check checkbox Enable injection of SonarQube server configuration as build environment variables.

Share:
13,498
Ali Khawar
Author by

Ali Khawar

Updated on June 14, 2022

Comments

  • Ali Khawar
    Ali Khawar almost 2 years

    Does SonarQube scanner support BlueOcean pipeline plugin without maven and docker, if it does how does the script works in Jenkinsfile?

    I'm new to Jenkins and BlueOcean and have tried all the basic possible aspects available.

    If the SonarQube plugin did support Declarative:

    pipeline {
      agent any
      stages {
        stage('SonarQube analysis') {
          tools {
            sonarQube 'SonarQube Scanner 2.8'
          }
          steps {
            withSonarQubeEnv('SonarQube Scanner') {
              sh 'sonar-scanner'
            }
          }
        }
      }
    }
    
  • Ali Khawar
    Ali Khawar about 6 years
    thanks, but point is if BlueOcean can show logs we need a declarative syntax script of SonarQube for its Jenkins file, where as i have tried like almost 6-8 different procedures(sharing above) to call it but neither one works.
  • agabrys
    agabrys about 6 years
    As I wrote BuleOcean is a persentaion layer and your problem is related to Declarative Pipeline or Scripted Pipeline.
  • Ali Khawar
    Ali Khawar about 6 years
    thanks for helping i have tried exactly the same procedure you suggested but by ouput is giiving an error can you please help me with it : `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)
  • agabrys
    agabrys about 6 years
    Are you sure that SonaRube step produces the error? Please edit your question and all important data (stacktrace. full pipeline script, configuration screen shots etc.)
  • Anna Ira Hurnaus
    Anna Ira Hurnaus about 6 years
    This almost works, you need to use see script step (see here: stackoverflow.com/questions/42763384/…) and don't forget your sonar-project.properties file at the root of your project
  • ALex
    ALex about 5 years
    @agabrys do you know how can i tick that "Enable injection..." after i deploy jenkins and it installing the plugin?