如何通过插件获取当前分支名称

时间:2018-03-14 16:04:35

标签: java git groovy

我需要项目的当前分支名称,我正在部署插件, 因此,插件的groovy类中当前分支名称的代码就像这样,

   def getCurrentGitBranch() {
        def gitBranch = "Unknown branch"
        try {
            def workingDir = new File(ProjectConfig.projectDir)
            def result = 'git rev-parse --abbrev-ref HEAD'.execute(null, workingDir)
            result.waitFor()
            if (result.exitValue() == 0) {
                gitBranch = result.text.trim()
            }
        } catch (Exception e) {
            throw new Exception("Problem occurred while fetching current branch name from git.")
        }
        log.info("Branch Name [ "+ gitBranch + "]")
        return gitBranch
    }

但出于某些原因,当使用jenkins在云上部署项目时,此函数返回HEAD而不是我正在尝试部署的项目的当前分支。

我尝试了很多不同的场景,但没有运气,我如何确保我正在使用的插件获取正在进行部署的项目的当前分支。

1 个答案:

答案 0 :(得分:3)

出于任何原因,你处于独立的头部。 (如果您不知道什么是分离的HEAD,请阅读this article。) 通常情况下,如果您执行git checkout SHA-1之类的操作,则处于此状态; git checkout tag(这些是几个之间的例子)。

似乎詹金斯检查了分离头中的代码。您可以使用$JENKINS_HOME/workspace/YOUR_PROJECT转到git status进行检查。

要解决您的问题,,您必须在Jenkins项目配置的 SCM管理部分下添加Additional Behaviours > Check out to a specific local branch。 阅读以下链接可能会对您有所帮助:Jenkins Git plugin detached HEAD