我需要我正在部署插件的项目的当前分支名称,
所以插件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,而不是我试图部署的项目的当前分支。
我尝试了很多不同的场景,但是没有成功,我如何确保我正在使用的插件获取正在进行部署的项目的当前分支。

最佳答案

不管什么原因,你的头脑都是独立的。(如果您不知道什么是分离的头部,请阅读this article。)
通常,如果您执行类似于git checkout SHA-1git checkout tag的操作,则会处于此状态(以下是几个之间的示例)。
詹金斯似乎是在独立的头脑里检查代码。您可以转到$JENKINS_HOME/workspace/YOUR_PROJECTgit status来检查。
要纠正您的问题,您必须在jenkins项目配置的scm management部分添加Additional Behaviours > Check out to a specific local branch
阅读以下链接可能有助于您:Jenkins Git plugin detached HEAD

08-26 13:52