I have a Jenkins Pipeline job which is configured to checkout a git repo and a specific local branch.
How can i get the name of the local branch in my Jenkinsfile?
I tried to load the git jenkins plugin env properties but had no luck.
node {
checkout scm
echo "1 "+ env.GIT_LOCAL_BRANCH
echo "2 "+ env.GIT_BRANCH
}
Both values are "null"
I found that I can capture the return value from checkout scm
and use that to get the branch name (and other values)
def scmVars
node('api-sample-build') {
stage('Clone source code') {
scmVars = checkout scm
// scmVars contains the following values
// GIT_BRANCH=origin/mybranch
// GIT_COMMIT=fc8279a107ebaf806f2e310fce15a7a54238eb71
// GIT_PREVIOUS_COMMIT=6f2e319a1fc82707ebaf800fce15a7a54238eb71
// GIT_PREVIOUS_SUCCESSFUL_COMMIT=310fce159a1fc82707ebaf806f2ea7a54238eb71
// GIT_URL=https://stash.someworkplace.com/scm/poc/api-sample.git
}
stage('test scope') {
echo scmVars.GIT_BRANCH
}
}
By defining the variable outside the node it is available in stages after the checkout.
I'm now using the sh call to get the branch name. This requires at least version 2.4 of the Pipeline Nodes and Processes Plugin.
def branchName = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
echo branchName
You can use scm
attributes to get the list of branches configured for your scm
:
// List of all configured branches
def allBranches = scm.branches
// Only the first configured branch name
def gitBranch = scm.branches[0].name