如何在 jenkins 管道中提取 Git 分支



我正在使用通用 webhook 触发器从拉取请求中检索分支名称和哈希。 在管道中,我想合并到一个特定的分支,因此我想提取分支的名称。

现在分支名称存储在一个变量中,如果我回显它是:refs/heads/

我想执行一个 sh 'git 合并 有什么方法可以从引用/头/中提取branch_name?

谢谢

您可以使用名为BRANCH_NAME的环境变量来提取分支的名称:

pipeline {
agent any
stages {
stage ('Print branch name') {
steps {
echo "Branch is ${env.BRANCH_NAME}"
}
}
}
}

不过,如果您的 PR 分支名称是"PR-1234",请不要感到惊讶。

如果您使用 Github并安装了 Pipeline Github 插件,则有一个名为pullRequest的变量,可用于获取有关拉取请求和基本分支的信息:

pipeline {
agent any
stages {
stage ('Print branch name') {
steps {
echo "Branch is ${env.BRANCH_NAME}"
script {
if (env.CHANGE_ID) {
echo "This PR is for the ${pullRequest.headRef} branch"
echo "The PR is over the  ${pullRequest.base} branch."
}
}
}
}
}
}

所以我终于想出了一个优雅的解决方案:

def branchName ="ref/head/DevBranch"

'def values= branchName.tokenize( '/' (

管道{ 代理。。。 { 回显 "${值[2]}"...

最新更新