我如何在詹金斯管道中提取Git分支

时间:2019-12-04 11:55:37

标签: git jenkins jenkins-pipeline bitbucket jenkins-groovy

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

现在,分支名称存储在变量中,如果我回显,则为:refs / heads /

我想执行sh'git merge 有什么方法可以从refs / heads /中提取branch_name?

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

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

如果使用Github并安装Pipeline Github plugin,则有一个名为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."
                    }
                }
            }
        }
    }
}

答案 1 :(得分:0)

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

def branchName ="ref/head/DevBranch"

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

管道{    代理商...     { 回声“ $ {values [2]}” ...