On this page

analysis-prerequisitesInstalling and Configuring your Jenkins pluginsConfiguring single branch pipeline jobsConfiguring multi-branch pipeline jobs

Jenkins integration

SonarScanners running in Jenkins can automatically detect branches and pull requests in certain jobs. You don't need to explicitly pass the branch or pull request details.


To run project analysis with Jenkins, you need to install and configure the following Jenkins plugins in Jenkins:

See the Installing and Configuring your Jenkins plugins section below for more information.

Configuring Jenkins using the SonarQube tutorial

If you're using Bitbucket Server, GitHub Enterprise, GitHub.com, GitLab Self-Managed, or GitLab.com, you can easily configure and analyze your projects by following the tutorial in SonarQube. You can access the tutorial by going to your project's Overview page and selecting with Jenkins under "How do you want to analyze your repository?"

Installing and Configuring your Jenkins plugins

SonarQube Scanner plugin

Click SonarQube Scanner below to expand instructions on installing and configuring the plugin.

Branch Source plugin

Required to analyze multibranch pipeline jobs in Developer Edition or above

Click your DevOps Platform below to expand the instructions on installing and configuring the Branch Source plugin.

Configuring single branch pipeline jobs

With Community Edition, you can only analyze a single branch. For more information, see the Jenkins extension for SonarQube documentation.

Configuring multi-branch pipeline jobs

Starting in Developer Edition, you can analyze multiple branches and Pull Requests. The automatic configuration of branches and Pull Requests relies on environment variables available in Multibranch Pipeline jobs. These are set based on information exported by Jenkins plugins.

For configuration examples, see the SonarScanner for Jenkins documentation.

Configuring Multibranch Pipeline jobs for Pull Request Decoration

You need to configure your Multibranch Pipeline job correctly to avoid issues with Pull Request decoration. From your Multibranch Pipeline job in Jenkins, go to Configure > Branch Sources > Behaviors.

For Bitbucket Server and GitHub, under Discover pull requests from origin, make sure The current pull request revision is selected.

For GitLab, under Discover merge requests from origin, make sure Merging the merge request with the current target branch revision is selected.

Detecting changed code in Pull Requests

SonarScanners need access to a Pull Request's target branch to detect code changes in the Pull Request. If you're using a Jenkins Pull Request discovery strategy that only fetches the Pull Request and doesn't merge with the target branch, the target branch is not fetched and is not available in the local git clone for the scanner to read.

In this case, the code highlighted as “new” in the Pull Request may be inaccurate, and you’ll see the following warning in the scanner’s log:

File '[name]' was detected as changed but without having changed lines

To fix this, either change the discovery strategy or manually fetch the target branch before running the SonarScanner. For example:

git fetch +refs/heads/${CHANGE_TARGET}:refs/remotes/origin/${CHANGE_TARGET}

© 2008-2023, SonarSource S.A, Switzerland. Except where otherwise noted, content in this space is licensed under a Creative Commons Attribution-NonCommercial 3.0 United States License. SONARQUBE is a trademark of SonarSource SA. All other trademarks and copyrights are the property of their respective owners.

Creative Commons License