如何在jenkins共享库中获取分支名称

时间:2017-10-17 22:26:30

标签: jenkins jenkins-pipeline

我正在尝试编写我的第一个Jenkins共享库,并且我正在努力学习基本的东西 - 获取分支名称。

我能做到:

sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()

但是,这需要结帐。是否有可能获得分支名称(对于multibranch和freestyle)管道项目?我知道我会使用git,但我想避免做结账(直到有必要)。

3 个答案:

答案 0 :(得分:0)

GIT_BRANCH环境变量可以为您提供所需的内容。在Jenkins 2.60和升级的管道模型定义插件之前,它不会在管道中工作。

答案 1 :(得分:0)

如果您正在使用管道作业,则可以

  • 从scm checkout返回的捕获对象
  • 参考环境变量
pipeline {
    // ...
    stages {
        stage('Setup') {
            steps {
                script {
                    // capture scm variables
                    def scmVars = checkout scm
                    String branch = scmVars.GIT_BRANCH

                    // or use the environment variable
                    branch = env.GIT_BRANCH
                }
            }
        }
        // ...
    }
}

Environment variable reference.

答案 2 :(得分:0)

我最终使用了这个:

 env.CHANGE_BRANCH ?: env.GIT_BRANCH ?: scm.branches[0]?.name?.split('/')[1] ?: 'UNKNOWN'

但是,这需要我批准In-Script Approvals页面中的几项内容。