# Setting up Jenkins

This section explains how to set up Jenkins globally for the integration with SonarQube by using SonarQube extension for Jenkins. This extension is not mandatory but allows a centralized installation and setup of the scanner directly from Jenkins.

Proceed as follows:

1. Install the SonarQube extension for Jenkins.
2. Install the SonarScanner from Jenkins.
3. If you have the Developer Edition of SonarQube or higher: set up the multi-branch features.

These steps are explained below.

## Installing the SonarQube extension for Jenkins <a href="#install-extension" id="install-extension"></a>

[SonarQube extension for Jenkins](https://plugins.jenkins.io/sonar/) version 2.11 or later is required.

Proceed as follows:

1. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Manage Plugins** and install the **SonarQube Scanner** plugin.
2. Back at the Jenkins Dashboard, navigate to **Credentials** > **System** from the left navigation.
3. Click the **Global credentials (unrestricted)** link in the **System** table.
4. Click **Add credentials** in the left navigation and add the following information:
   * **Kind**: Secret Text
   * **Scope**: Global
   * **Secret**: Generate a token at **User** > **My Account** > **Security** in SonarQube, and copy and paste it here.
5. Click **OK**.
6. From the Jenkins Dashboard, navigate to **Manage Jenkins > Configure System**.
7. From the **SonarQube Servers** section, click **Add SonarQube**. Add the following information:
   * **Name**: Give a unique name to your SonarQube instance.
   * **Server URL**: Your SonarQube instance URL.
   * **Credentials**: Select the credentials created during step 4.
8. Click **Save**

## Installing the SonarScanner instance(s) <a href="#install-scanner" id="install-scanner"></a>

From Jenkins, install and configure the SonarScanner instance(s). This step depends on the project type.

{% tabs %}
{% tab title="MAVEN OR GRADLE" %}

1. Log into Jenkins as an administrator and go to **Manage Jenkins** > **Configure System.**
2. Scroll to the **SonarQube servers** section and check **Enable injection of SonarQube server configuration as build environment variables**.
   {% endtab %}

{% tab title=".NET" %}
This step is mandatory if you want to trigger any of your analyses with the SonarScanner for .NET. You can define as many scanner instances as you wish. Then for each Jenkins job, you will be able to choose which launcher to use to run the analysis.

To install and configure the scanner instances:

1. Log into Jenkins as an administrator and go to **Manage Jenkins** > **Global Tool Configuration.**
2. Click on **Add SonarScanner for MSBuild.**
3. Add an installation of the latest available version. Check **Install automatically** to have the SonarScanner for .NET automatically provisioned on your Jenkins executors.\
   If you do not see any available version under Install from GitHub, first go to **Manage Jenkins** > **Manage Plugins** > **Advanced** and click on **Check now.**

{% hint style="info" %}
In version 5.0 of the SonarScanner, we changed the name of the *SonarScanner for MSBuild* to *SonarScanner for .NET*.

The documentation is updated with the new name and we will call the scanner *SonarScanner for .NET* moving forward.
{% endhint %}
{% endtab %}

{% tab title="OTHER" %}
This step is mandatory if you want to trigger any of your analyses with the SonarScanner CLI. You can define as many scanner instances as you wish. Then, for each Jenkins job, you will be able to choose which launcher to use to run the analysis.

To install and configure the scanner instances:

1. Log into Jenkins as an administrator and go to **Manage Jenkins** > **Global Tool Configuration.**
2. Scroll down to the SonarScanner configuration section and select **Add SonarScanner**. It is based on the typical Jenkins tool auto-installation. You can either choose to point to an already installed version of the SonarScanner CLI (uncheck **Install automatically**) or tell Jenkins to grab the installer from a remote location (check **Install automatically**).\
   If you don’t see a drop-down list with all available SonarScanner CLI versions but instead see an empty text field, this is because Jenkins still hasn’t downloaded the required update center file (the default period is one day). You may force this refresh by selecting **Check Now** in **Manage Plugins** > **Advanced tab**.
   {% endtab %}
   {% endtabs %}

## Setting up the multi-branch features <a href="#branch-features-settings" id="branch-features-settings"></a>

From SonarQube Developer Edition, you can use multi-branch features.

To be able to analyze Jenkins Multibranch Pipeline jobs, you must:

1. On your CI host, install the Branch Source plugin for Jenkins corresponding to your DevOps platform.

{% tabs %}
{% tab title="BITBUCKET SERVER OR DATA CENTER" %}
[Bitbucket Branch Source plugin](https://plugins.jenkins.io/cloudbees-bitbucket-branch-source/) version 2.7 or later is required

From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Manage Plugins** and install the **Bitbucket Branch Source** plugin. Then configure the following:

1. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Configure System**.
2. From the **Bitbucket Endpoints** section, open the **Add** drop-down menu and select **Bitbucket Server**. Add the following information:
   * **Name**: Give a unique name to your Bitbucket Server or Data Center instance.
   * **Server URL**: Your Bitbucket Server or Data Center instance URL.
3. Select **Save**.
   {% endtab %}

{% tab title="BITBUCKET CLOUD" %}
[Bitbucket Branch Source plugin](https://plugins.jenkins.io/cloudbees-bitbucket-branch-source/) version 2.7 or later is required

From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Manage Plugins** and install the **Bitbucket Branch Source** plugin.
{% endtab %}

{% tab title="GITHUB" %}
[GitHub Branch Source plugin](https://plugins.jenkins.io/github-branch-source/) version 2.7.1 or later is required

1. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Manage Plugins** and install the **GitHub Branch Source** plugin.
2. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Configure System**.
3. From the **GitHub** or **GitHub Enterprise Servers** section, add your GitHub server.
4. Select **Save**.
   {% endtab %}

{% tab title="GITLAB" %}
[GitLab Branch Source plugin](https://plugins.jenkins.io/gitlab-branch-source/) version 1.5.3 or later is required

1. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Manage Plugins** and install the **GitLab Branch Source** plugin.
2. From the Jenkins Dashboard, navigate to **Manage Jenkins** > **Configure System**.
3. From the **GitLab** section, add your GitLab server. Make sure to select the **Manage Web Hooks** checkbox.
4. Select **Save**.
   {% endtab %}
   {% endtabs %}

2\. Set up the [setting-up-the-pull-request-analysis](https://docs.sonarsource.com/sonarqube-server/10.6/analyzing-source-code/pull-request-analysis/setting-up-the-pull-request-analysis "mention") and [setting-up-the-branch-analysis](https://docs.sonarsource.com/sonarqube-server/10.6/analyzing-source-code/branch-analysis/setting-up-the-branch-analysis "mention").

## Other settings <a href="#other-settings" id="other-settings"></a>

If applicable, configure [webhooks](https://docs.sonarsource.com/sonarqube-server/10.6/project-administration/webhooks "mention") at global level to be used for pipeline jobs to set up an [pipeline-pause](https://docs.sonarsource.com/sonarqube-server/10.6/analyzing-source-code/ci-integration/jenkins-integration/pipeline-pause "mention").
