【发布时间】:2013-03-13 20:31:10
【问题描述】:
我已经设置 Jenkins 来自动构建我项目的几个 git 分支。构建还会触发声纳分析,作为构建后操作。
问题是所有分支都指向同一个 Sonar 项目。我知道有一个 sonar.branch 属性。是否可以让 Jenkins 自动将 sonar.branch 属性设置为正在构建的当前 git 分支(无需更改项目的 pom.xml)?
【问题讨论】:
标签: git maven jenkins sonarqube
我已经设置 Jenkins 来自动构建我项目的几个 git 分支。构建还会触发声纳分析,作为构建后操作。
问题是所有分支都指向同一个 Sonar 项目。我知道有一个 sonar.branch 属性。是否可以让 Jenkins 自动将 sonar.branch 属性设置为正在构建的当前 git 分支(无需更改项目的 pom.xml)?
【问题讨论】:
标签: git maven jenkins sonarqube
这应该可以工作
mvn sonar:sonar -U -Dsonar.branch.name=$BRANCH_NAME
【讨论】:
您可以尝试在 jenkins 构建后操作(高级配置)的 MAVEN_OPTS 字段中添加-Dsonar.branch.name=something。
我不知道如何解决 something,因为我不知道您如何配置您的 jenkins 作业...但它可能类似于 $git.branch。
我没有尝试,所以我不确定它是否会起作用。
在 Jenkins 多分支管道中,变量为 BRANCH_NAME。
附言
在阅读您的问题时,很难说您是否使用 Maven 来触发声纳。如果你没有使用 maven:there is a project properties field in the Jenkins config where you can define sonar.branch.
【讨论】:
sonar.branch.name 属性仅在商业版中可用,而在社区版中不可用。
您是否使用构建参数来指定分支?
如果是,您可以轻松告诉 Sonar 它是哪个分支,只需添加配置文本区域:
sonar.branch=${branch}
其中 branch 是构建参数的名称。
【讨论】:
我不确定这是否有助于您自动执行 Jenkins,但是要运行具有正确分支集的 mvn sonar:sonar,如果您在 Unix 中,您可以运行命令(注意反引号)基于环境:
mvn -Dsonar.branch=`git rev-parse --abbrev-ref HEAD` sonar:sonar
【讨论】: