我已经设置Jenkins自动构建我项目的几个git分支。构建还会触发Sonar分析,作为构建后的操作。
问题是所有分支都指向同一个Sonar项目。我知道有一个sonar.branch属性。是否有可能让Jenkins自动将sonar.branch属性设置为正在构建的当前git分支(无需更改项目的pom.xml)?
答案 0 :(得分:19)
您可以尝试在jenkins构建后操作(高级配置)中的MAVEN_OPTS字段中添加-Dsonar.branch.name=something
。
我不知道如何解决something
,因为我不知道你如何配置你的jenkins工作......但它可能会像$git.branch
那样。
我没有尝试,所以我不确定它会起作用。
在Jenkins多分支管道中,变量为BRANCH_NAME
。
<强> P.S。强>
在阅读你的问题时,很难说你是否正在使用maven来触发声纳。如果您不使用maven:there is a project properties
field in the Jenkins config where you can define sonar.branch
。
答案 1 :(得分:1)
这应该有效
mvn sonar:sonar -U -Dsonar.branch.name=$BRANCH_NAME
答案 2 :(得分:0)
我不确定这是否可以帮助你自动执行Jenkins,但运行mvn声纳:声纳有正确的分支集,你可以运行命令(注意后引号),如果你在Unix中基于环境:
mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar
答案 3 :(得分:0)
您是否使用构建参数来指定分支?
如果是的话,你可以很容易地告诉Sonar它是哪个分支,juste在config textarea中添加:
sonar.branch=${branch}
其中branch是构建参数的名称。