如何在Jenkins多分支项目中始终从BRANCH_NAME和CHANGE_BRANCH环境变量中检索分支名称?

dhxwm5r4  于 2023-05-28  发布在  Jenkins
关注(0)|答案(1)|浏览(198)

我正在做一个Jenkins多分支项目

  • 构建分支时,BRANCH_NAMEGIT_BRANCH被设置为分支的名称(master),而CHANGE_BRANCH不存在
BRANCH_NAME=master
GIT_BRANCH=master
CHANGE_BRANCH not exist
  • 当建立变更请求时,CHANGE_BRANCH被设置为分支名称(feature),BRANCH_NAMEGIT_BRANCH被设置为变更请求名称(PR-01)。
BRANCH_NAME=PR-01
GIT_BRANCH=PR-01
CHANGE_BRANCH=feature

分支_NAME对于多分支项目,这将被设置为正在构建的分支的名称,例如,如果您希望从主分支而不是从功能分支部署到生产;如果对应于某种变更请求,则名称通常是任意的(参考CHANGE_ID和CHANGE_TARGET)。
GIT_分支远程分支名称(如果有的话)。
CHANGE_分支对于一个多分支项目,对应于某种类型的变更请求,这将被设置为源代码控制系统上的实际头的名称,它可能与BRANCH_NAME不同,也可能没有不同。例如,在GitHub或Bitbucket中,这将具有原始分支的名称,而BRANCH_NAME将类似于PR-24。
在我的声明式管道中,我总是需要分支名称,无论是否构建了更改请求。
目前我用bash中的参数扩展来解决这个问题:
sh 'echo branch name: ${CHANGE_BRANCH:-${BRANCH_NAME}}'
有没有一个更面向Jenkins的方法来解决这个问题?

q7solyqu

q7solyqu1#

构建拉取请求时,会设置一个名为CHANGE_ID的变量(设置为PR号)。您可以使用该变量在其他两个变量之间进行选择:

def always_branch = env.CHANGE_ID ? env.CHANGE_BRANCH : env.BRANCH_NAME

相关问题