我想根据正在构建的分支来自定义环境变量之一。
environment {
CUSTOM_ENV='xyz_${GIT_BRANCH}'
}
我想获得CUSTOM_ENV=xyz_dev
的{{1}}和origin/dev
的{{1}}。不确定它是否重要,但是不确定它在詹金斯的多分支项目。
我尝试了诸如CUSTOM_ENV=xyz_master
或origin/master
之类的方法,但是都没有解决。
答案 0 :(得分:0)
如果您的Shell恰好与ksh
或bash
兼容,则可以使用变量扩展修饰符##
丢弃所有内容,包括最后的/
字符,剩下的只是${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}"
}