Search code examples
jenkinsgrgit

Get git branch name with gradle git plugin on jenkins slave


I'm doing sonar integration and would like to pass git branch as a parameter. It will be run on Jenkins server.

Before I was using next line of code to get current git branch:

def workingBranch = """git rev-parse --abbrev-ref HEAD""".execute().text.trim()

After I replaced it with:

grgit.branch.current.fullName

But this always gives me "HEAD". How to achieve same functionality?


Solution

  • I am doing something very similar. As it turns out, the Git plugin in Jenkins is tuned in several ways to minimize the git clone and checkout. There are 2 ways that I've found to deal with this.

    1. The Easy Way

      Use Jenkins' built-in environment variables, as you already suggested in the comments.

    def workingBranch = System.getenv("GIT_BRANCH") ?: grgit.branch.current.fullName

    1. The Job Configuration Way

      You can also set up the job to checkout the branch as a local branch, rather than a detached HEAD. This is under "Additional Behaviors", named "Check out to specific local branch". There are many other questions that detail the settings for that, and/or the Declarative Pipeline approach, depending on what your needs.