Jenkins构建使用变量$ {GIT_BRANCH}作为sonarqube参数而没有“origin /”

时间:2014-02-21 14:08:58

标签: git jenkins sonarqube

大型团队,每个团队都有独立的git分支,声纳作为代码质量检查器。

scm工具设置为拾取与此名称对应的每个分支:'feature-branch-*',对于maven构建,它可以完美地工作。我想设置sonarqube所以它会为每个实际的git分支使用不同的分支,但是sonarqube不允许使用通配符。 但它确实允许变量,所以我尝试了${GIT_BRANCH},但是这个变量保持:'origin/feature-branch-214',其中sonarqube不能识别为有效的分支名称。 Sonarqube期待'feature-branch-214'

所以我需要放置一些东西(在sonarqube分支中) ${GIT_BRANCH}的子字符串以排除'origin/'部分。

5 个答案:

答案 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