You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitBucket触发的Jenkinsfile流水线中获取推送分支名称

问题

已配置Jenkins服务器通过GitBucket仓库的推送事件触发流水线,在多分支场景下需要获取推送的分支名称,但尝试了v1到v7多种方法(代码示例如下),均返回“Branch null.”,请求技术协助。

stage('show branch')
{
// v1
// def payload = readJSON file: 'payload.json'
// def branch = payload.ref.split('/').last()
// sh "echo 'Branch name: ${branch}'"
// v2
// checkout scm
// def branchName = scm.branches[scm.branches.length-1].name
// echo "The branch name is $branchName"
// v3
// echo "The branch v3 name is $BB_BRANCH"
// v4
// echo "Branch :${env.GIT_BRANCH}"
// v5
// checkout scm
// def branchName = sh(script: 'git symbolic-ref -q --short HEAD', returnStdout: true).trim()
// echo "The branch v5 name is $branchName"
// v6
// echo "The branch v6 name is $BITBUCKET_SOURCE_BRANCH"
// v7
echo "Branch v7 :${env.BRANCH_NAME}"
}
解决方案

针对GitBucket触发Jenkins多分支流水线获取分支名的问题,可按以下步骤排查解决:

  • 验证GitBucket Webhook Payload:GitBucket推送事件会将payload传入Jenkins的GIT_BUCKET_PAYLOAD环境变量,先打印完整payload确认ref字段存在:

    stage('Debug Payload') {
        steps {
            script {
                def payload = readJSON text: env.GIT_BUCKET_PAYLOAD
                echo "完整Payload内容: ${payload}"
                def branch = payload.ref.split('/').last()
                echo "从Payload解析的分支名: ${branch}"
            }
        }
    }
    
  • 确认流水线类型为多分支流水线:env.BRANCH_NAME是Jenkins多分支流水线的专属环境变量,只有创建的是多分支流水线而非普通流水线,该变量才会自动填充分支名称。

  • Git命令直接获取分支名:确保完成代码checkout后,执行Git命令获取当前分支:

    stage('通过Git命令获取分支') {
        steps {
            checkout scm
            script {
                def branchName = sh(script: 'git rev-parse --abbrev-ref HEAD', returnStdout: true).trim()
                echo "当前分支名: ${branchName}"
            }
        }
    }
    
  • 检查必要插件状态:确保Jenkins已安装并启用GitBucket Plugin和Pipeline Multibranch Plugin,这两个插件负责解析GitBucket推送事件并填充分支相关环境变量。

内容的提问来源于stack exchange,提问作者MOHCINE TOR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:37:28