First of all,
def branch = ${BRANCH_NAME}
is not valid Groovy, or at least not doing what you think. Perhaps you meant
def branch = "${BRANCH_NAME}"
which would just be a silly way of writing
def branch = BRANCH_NAME
Anyway environment variables are not currently accessible directly as Groovy variables in Pipeline (there is a proposal to allow it); you need to use the env
global variable:
def branch = env.BRANCH_NAME
From within an external process, such as a sh
step, it is an actual environment variable, so
sh 'echo $BRANCH_NAME'
works (note that '
means Groovy is not interpolating the variable).
Now, JENKINS-30252 was referring to multibranch projects. If you created a standalone Pipeline job, this variable will not be set.
Anyway in your case your checkout
step is always checking out the master
branch. If you actually have a multibranch project, then your Jenkinsfile
should be using
checkout scm
which will check out a commit on the correct branch (always matching the revision of Jenkinsfile
itself).
As to the commit hash, pending JENKINS-26100 this is not available automatically, but you can use something like
sh 'git rev-parse HEAD > commit'
def commit = readFile('commit').trim()
to access it.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…