在Jenkinsfile中的环境变量中使用git分支

时间:2019-07-29 08:02:06

标签: jenkins environment-variables jenkins-pipeline branch

我想根据正在构建的分支来自定义环境变量之一。

environment {
        CUSTOM_ENV='xyz_${GIT_BRANCH}'
    }

我想获得CUSTOM_ENV=xyz_dev的{​​{1}}和origin/dev的{​​{1}}。不确定它是否重要,但是不确定它在詹金斯的多分支项目。

我尝试了诸如CUSTOM_ENV=xyz_masterorigin/master之类的方法,但是都没有解决。

2 个答案:

答案 0 :(得分:0)

如果您的Shell恰好与kshbash兼容,则可以使用变量扩展修饰符##丢弃所有内容,包括最后的/字符,剩下的只是${GIT_BRANCH}之后的/部分。看起来像:

CUSTOM_ENV="xyz_${GIT_BRANCH##*/}"

请注意您在问题中使用的双引号",而不是单引号'。单引号可以防止对带引号的字符串中的变量求值,在这种情况下绝对不是您想要的。

如果您的外壳不了解##修饰符,则必须使用sed之类的内容来获取${GIT_BRANCH}的最后一部分。看起来像这样:

CUSTOM_ENV="xyz_$(echo ${GIT_BRANCH} | sed -e 's@.*/@@')"

答案 1 :(得分:0)

在jenkinsfile中进行变量替换时。它应始终位于""中。根据环境指令,我猜您正在使用管道。因此,您可以利用常规语法来实现字符串操作。

environment {
        GIT_BRANCH = 'orgin/master'.split('/')[1]
        CUSTOM_ENV="xyz_${GIT_BRANCH}"
    }