大型团队,每个团队都有独立的git分支,声纳作为代码质量检查器。
scm工具设置为拾取与此名称对应的每个分支:'feature-branch-*'
,对于maven构建,它可以完美地工作。我想设置sonarqube所以它会为每个实际的git分支使用不同的分支,但是sonarqube不允许使用通配符。
但它确实允许变量,所以我尝试了${GIT_BRANCH}
,但是这个变量保持:'origin/feature-branch-214'
,其中sonarqube不能识别为有效的分支名称。 Sonarqube期待'feature-branch-214'
所以我需要放置一些东西(在sonarqube分支中) ${GIT_BRANCH}
的子字符串以排除'origin/'
部分。
答案 0 :(得分:6)
您可以创建一个新变量并指定值:
`echo ${GIT_BRANCH} | cut -d'/' -f 2-`
之后,您可以按照以下步骤在Jenkins Git Branch SonarQube参数中使用新变量。
<强>步骤强>
在构建部分中,使用Execute Shell
添加command
步骤:
echo NEW_VAR=`echo ${GIT_BRANCH} | cut -d'/' -f 2-` > newfile
然后使用Inject an environment variable
添加Properties File Path
步骤:
newfile
在SonarQube配置中,离开branch
字段empty
并在Additional properties field
中添加以下内容:
-Dsonar.branch=${NEW_VAR}
以上解决方案不是很干净,但我已经确认它有效
答案 1 :(得分:6)
或者你可以:
echo NEW_VAR=${GIT_BRANCH#*/} > newfile
答案 2 :(得分:0)
req.user
答案 3 :(得分:0)
最简单的方法是使用Jenkins环境变量GIT_LOCAL_BRANCH而不是GIT_BRANCH。您可以在http://[jenkins-url]/env-vars.html
上查看Jenkins环境变量的完整列表。答案 4 :(得分:0)
您可以使用$ {GIT_LOCAL_BRANCH},而无需输入“ origin /”
GIT_LOCAL_BRANCH –选择“签出到特定本地分支” Jenkins Git插件选项时,本地Git分支的名称 如果提供,请签出修订版本以在该分支上以HEAD的形式构建。
如果选中,并且其值为空字符串或“ **”,则从远程分支计算分支名称,而没有源。在这种情况下,将把远程分支的起源/主节点检出到名为master的本地分支,并将远程分支的起源/开发/新功能检出到名为develop / newfeature的本地分支。
请注意,这尚未在子模块上进行测试。 enter image description here