Breaks the build if the SonarQube quality gate of the project is red.
See the blog post I wrote for more details.
- Maven plugin - You can use this to run it in your Maven build.
- CLI - You can use this to run it in your CI pipeline as standalone application.
- Library - A library which provides the building blocks. You only need this if you want to develop your own build breaker.
Put this line directly after the SonarQube analysis:
mvn --batch-mode --update-snapshots --non-recursive de.qaware.tools.sonarqube-build-breaker:sqbb-maven-plugin:sqbb -Dsqbb.sonarQubeUrl=$SONAR_URL -Dsqbb.sonarQubeToken=$SONAR_TOKEN -Dsqbb.branch=$CI_BUILD_REF_NAME
This line will automatically download the newest SonarQube build breaker and run it.
The build breaker needs two environment variables set:
SONAR_TOKEN
SONAR_URL
These can be configured in the CI/CD settings in the GitLab project configuration.
SonarQube supports two modes of branch analysis:
Old versions of SonarQube supported appending the branch to the project key, e.g. if the project key is
de.qaware.tools.sonarqube-build-breaker:sonarqube-build-breaker
and you set -Dsonar.branch=master
when running the analysis,
the project for the branch is de.qaware.tools.sonarqube-build-breaker:sonarqube-build-breaker:master
.
If you have such projects, this is how you would run the Maven plugin:
mvn --batch-mode --update-snapshots --non-recursive de.qaware.tools.sonarqube-build-breaker:sqbb-maven-plugin:sqbb -Dsqbb.sonarQubeUrl=$SONAR_URL -Dsqbb.sonarQubeToken=$SONAR_TOKEN -Dsqbb.branch=<branch> -Dsqbb.branchMode=projectKey
and the CLI:
java -jar cli.jar --branch=master --branch-mode=projectKey <your project key>
If you use newer versions of SonarQube, the -Dsonar.branch
is deprecated and no longer works. You can either purchase a license if you want to support the
SonarQube developers or you can install this plugin.
Then you can use the -Dsonar.branch.name
property when running the SonarQube analysis.
If you have such projects, this is how you would run the Maven plugin:
mvn --batch-mode --update-snapshots --non-recursive de.qaware.tools.sonarqube-build-breaker:sqbb-maven-plugin:sqbb -Dsqbb.sonarQubeUrl=$SONAR_URL -Dsqbb.sonarQubeToken=$SONAR_TOKEN -Dsqbb.branch=<branch> -Dsqbb.branchMode=sonarQube
and the CLI:
java -jar cli.jar --branch=master --branch-mode=sonarQube <your project key>
See this document.
Licensed under MIT, Copyright (c) 2019 - 2020 QAware GmbH
Moritz Kammerer ([email protected] | @phxql)