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

Java 如何通过插件获取当前分支名称,java,git,groovy,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

我需要部署插件的项目的当前分支名称, 插件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,而不是我试图部署的项目的当前分支


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

出于任何原因,您处于分离状态。(如果您不知道什么是分离头,请阅读。) 通常,如果您执行类似于git checkout SHA-1的操作,您就会处于这种状态
git签出标签
(以下是几个示例)

詹金斯似乎在超脱的头脑中检查代码。您可以转到
$JENKINS_HOME/workspace/YOUR_PROJECT
查看
git状态

要纠正您的问题,您必须在Jenkins项目配置的SCM管理部分下添加
其他行为>签出到特定的本地分支机构。

阅读以下链接可能会对您有所帮助:

感谢您的解释我查看jenkins配置其部署主分支,并将build参数作为一个版本,我如何确保Jenkins在分离头上有任何想法我在回答中提供了更多细节实际上我可以在Jenkins的部署日志中看到git checkout-f 63812e412cffb50d6b0debbf7baf5be359ae39d2这意味着它在分离头上,对吗?从我所读到的关于分离头的任何信息来看,是的,这是正确的。要改变这一点,您必须在Jenkins项目配置下的SCM管理中添加“其他行为”/“签出到特定的本地分支机构”