Reputation: 898
I have setup Jenkins to automatically build several git branches of my project. The build also triggers Sonar analysis, as a post-build action.
The problem is that all branches point to the same Sonar project. I know that there is a sonar.branch property. Is it possible to have Jenkins automatically set sonar.branch property to the current git branch being built (without having to change project's pom.xml)?
Upvotes: 15
Views: 33800
Reputation: 1033
For achieving this I generally use -Dsonar.branch.name=${env.CHANGE_BRANCH}
Upvotes: 0
Reputation: 28706
You can try adding -Dsonar.branch.name=something
in the field MAVEN_OPTS in jenkins post-build action (Advanced configuration).
I don't know how to resolve something
, since I don't know how you configure your jenkins job... but it will probably be something like $git.branch
.
I didn't try, so i'm not sure it will work.
In a Jenkins multi-branch pipeline, the variable is BRANCH_NAME
.
P.S.
While reading your question it's difficult to say if you are using maven or not to trigger sonar. If you are not using maven: there is a project properties
field in the Jenkins config where you can define sonar.branch
.
Upvotes: 25
Reputation: 22661
Did you use build parameters in order to specify the branch?
If yes, you can easily tell to Sonar which branch is it, juste add in config textarea:
sonar.branch=${branch}
Where branch is the name of the build parameter.
Upvotes: 0
Reputation: 326
I am not sure if this helps you with the automated Jenkins execution, but to run a mvn sonar:sonar with the proper branch set, you can run the command (note the back-quotes), if you are in a Unix based environment:
mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar
Upvotes: 1