# Azure Pipelines integration overview

It allows:

* Integrating smoothly SonarQube analysis into your Azure build pipeline. This includes multi-branch analysis features.
* Reporting the analysis’ quality gate status right in Azure Pipeline’s Build Summary page.
* Checking the SonarQube quality gate status in your Azure release pipeline.

For general information about the SonarQube Server analysis integration into a CI pipeline, see [SonarQube Server analysis overview](/sonarqube-server/2025.2/analyzing-source-code/analysis-overview.md).

## Extension modes <a href="#extension-modes" id="extension-modes"></a>

The Azure DevOps extension for SonarQube Server can run in one of the following modes depending on your project type:

* **.NET**: for .NET projects. The [Introduction](/sonarqube-server/2025.2/analyzing-source-code/scanners/dotnet/introduction.md) is used.
* **Maven or Gradle**: for Maven and Gradle projects. The [SonarScanner for Maven](/sonarqube-server/2025.2/analyzing-source-code/scanners/sonarscanner-for-maven.md) or [SonarScanner for Gradle](/sonarqube-server/2025.2/analyzing-source-code/scanners/sonarscanner-for-gradle.md) is used, respectively.
* **CLI**: for the other project types (C family, JavaScript, TypeScript, Go, Python, PHP, etc.). The [SonarScanner CLI](/sonarqube-server/2025.2/analyzing-source-code/scanners/sonarscanner.md) is used.

The Azure DevOps Extension for SonarQube Server embeds the last compatible version of the SonarScanner for .NET and SonarScanner CLI, which is used by default.

In Maven/Gradle mode, your build task downloads the SonarScanner for Maven or Gradle from the Sonar binaries site.

{% hint style="info" %}
In very particular situations, you may not want to use the extension’s default version but a specific previous version of the SonarScanner for .NET or CLI. In such a case, you can configure your Azure build pipeline to download this specific version from the Sonar binaries site (see [Using various features](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/adding-analysis-to-pipeline/various-features.md)).
{% endhint %}

## SonarQube tasks used in the pipeline definition <a href="#sonarqube-tasks" id="sonarqube-tasks"></a>

The SonarQube Server analysis is integrated into your Azure build pipeline by adding the following SonarQube tasks to your build pipeline definition:

* Prepare Analysis Configuration
* Run Code Analysis\
  This task starts the SonarScanner for .NET or CLI. In the Maven/Gradle mode, it is replaced by a Maven or Gradle task that downloads the SonarScanner for Maven or Gradle, respectively.
* Publish Quality Gate Result\
  With this task, the quality gate status and a link to SonarQube Server are shown in the Azure Pipeline’s Build Summary page.

{% hint style="info" %}
The Publish Quality Gate Result task can significantly increase the overall build time because it will poll SonarQube until the analysis is complete.
{% endhint %}

## Analysis process overview <a href="#analysis-process-overview" id="analysis-process-overview"></a>

The figure below shows the analysis’s main steps with the example of a .NET project :

1. The pipeline’s Run Code Analysis task starts the SonarScanner for .NET embedded in the Azure DevOps Extension for SonarQube Server. (The SonarScanner then downloads its binaries from the server as explained in **Scanner engine and analyzers download** in [SonarQube Server analysis overview](/sonarqube-server/2025.2/analyzing-source-code/analysis-overview.md).)
2. Once the analysis is complete, the scanner sends the results to SonarQube Server.
3. SonarQube Server sends the quality gate status to Azure DevOps. This information is processed through the pipeline’s Publish Quality Gate Result task.

<figure><img src="/files/RXajrz8DXAhqhiBXKcwV" alt="The SonarScanner for .NET is invoked twice during the build pipeline in Azure DevOps."><figcaption></figcaption></figure>

## Related pages <a href="#related-pages" id="related-pages"></a>

* [Setting up integration at global level](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/setting-up-integration-at-global-level.md)
* [Creating and configuring your project](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/creating-your-project.md)
* [Setting up project integration](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/setting-up-project-integration.md)
* [Introduction](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/adding-analysis-to-pipeline/introduction.md)
* [Troubleshooting analysis](/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/troubleshooting-analysis.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sonarsource.com/sonarqube-server/2025.2/devops-platform-integration/azure-devops-integration/azure-pipelines-integration-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
