.github | ||
gradle/wrapper | ||
src | ||
.gitattributes | ||
.gitignore | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
README.md | ||
settings.gradle |
Sonarqube Community Branch Plugin
A plugin for SonarQube to allow branch analysis in the Community version.
Support
This plugin is not maintained or supported by SonarSource and has no official upgrade path for migrating from the SonarQube Community Edition to any of the Commercial Editions (Developer, Enterprise, or Data Center Edition). Support for any problems is only available through issues on the Github repository or through alternative channels (e.g. StackOverflow) and any attempt to request support for this plugin directly from SonarSource or an affiliated channel (e.g. Sonar Community forum) is likely to result in your request being closed or ignored.
If you plan on migrating your SonarQube data to a commercial edition after using this plugin then please be aware that this may result in some or all of your data being lost due to this compatibility of this plugin and the official SonarQube branch features being untested.
Compatibility
Use the following table to find the correct plugin version for each SonarQube version
SonarQube Version | Plugin Version |
---|---|
7.8 - 8.0 | 1.3.1 |
7.4 - 7.7 | 1.0.2 |
Features
The plugin is intended to support the features and parameters specified in the SonarQube documentation, with the following caveats
- Pull Requests: Analysis of Pull Requests is fully supported, but the decoration of pull requests is only currently available for Github, Gitlab and Bitbucket Server
Installation
Either build the project or download a compatible release version of the plugin JAR. Copy the plugin JAR file to the extensions/plugins/
and the lib/common/
directories of your SonarQube instance and restart SonarQube.
Installation Docker
Add download the plugin and mount it to the container see the last two volumes in the yaml below.
version: 2
services:
sonarqube:
image: sonarqube:lts
container_name: sonarqube
ports:
- 9000:9000
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
- /home/user/sonarqube-community-branch-plugin-X.X.X.jar:/opt/sonarqube/extensions/plugins/sonarqube-community
-branch-plugin.jar
- /home/user/sonarqube-community-branch-plugin-X.X.X.jar:/opt/sonarqube/lib/common/sonarqube-community-branch
-plugin.jar
db:
image: postgres
container_name: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
Configuration
Global configuration
If you can define the properties globally (e.g. the pull request provider) within your SonarQube instance go to /admin/settings?category=pull+request and set the properties as admin.
Set all other properties that you can define globally for all of your projects.
Make sure sonar.core.serverBaseURL
in SonarQube /admin/settings is properly
set in order to for the links in the comment to work.
Project configuration
Override the global configuration on project level at /project/settings?category=pull+request&id=PROJECT_KEY and set project specific settings here.
Configuration of Bitbucket Server
Set properties for Bitbucket Server either on Global configuration or Project configuration level as mentioned in the Configuration section.
How to decorate the PR
In order to decorate your short living branch (hotfixes, features, ...) pull-requests you need to analyze your long living branches (master, development, release branches) first.
You can configure patterns for long living branches in SonarQube.
Run analysis of long living branches
The analysis needs the following setting:
sonar.branch.name = branch_name (e.g master)
Run analysis of the PR branch
Carefully read the official SonarQube guide for pull request decoration
In there you'll find the following properties that need to be set.
sonar.pullrequest.key = pull_request_id (e.g. 100)
sonar.pullrequest.branch = source_branch_name (e.g feature/TICKET-123)
sonar.pullrequest.base = target_branch_name (e.g master)
⚠️ There must not be any sonar.branch
properties like sonar.branch.name
arguments set when you analyze a
pull-request. These properties indicate to sonar that a branch is being analyzed rather than a pull-request so no
pull-request decoration will be executed.
Serving images for PR decoration
By default, images for PR decoration are served as static resources on the SonarQube server as a part of Community Branch Plugin.
If you use a SonarQube server behind a firewall and/or PR service (Github, Gitlab etc.) hasn't access to SonarQube server, you should change Images base URL
property in General > Pull Request
settings.
Anyone needing to set this value can use the URL https://raw.githubusercontent.com/mc1arke/sonarqube-community-branch-plugin/master/src/main/resources/static
, or download the files from this location and host them themself.
Building the plugin from source
In case you want to try and test the current branch or build it for your development execute ./gradlew clean build
inside of the project directory. This will put the built jar under libs/sonarqube-community-branch-plugin*.jar