How can I access the last built revision according to jenkins?

12,669

Solution 1

I do not think the git plugin exports the last built revision as an environment variable, but the information is easily available using a simple shell command like:

curl -sf "$BUILD_URL/api/xml?xpath=//lastBuiltRevision/SHA1/text()"

BUILD_URL always points to the build's own page and the rest of the information seems to be available using the xml api.

Solution 2

You can directly access the Jenkins BUILD_NUMBER as system environment variable.

task getBuildNumber << {
    ext.env = System.getenv()
    ext.buildNumber = env.BUILD_NUMBER?.toInteger()
    println "Build Number: $buildNumber"
}

Solution 3

Turns out, the Git plugin DOES export the last build revision as an environment variable. So instead of using the accepted answer:

curl -sf "$BUILD_URL/api/xml?xpath=//lastBuiltRevision/SHA1/text()"

you can just use this instead:

GIT_PREVIOUS_COMMIT

One failproof way to see exactly what's available to your build script is to choose Add Build Step > Execute Shell then simply add the following:

export

view your console (for the build) and you should see lots of great environment variables available to you. The git-related variables that were available to me (using the git plugin) were:

GIT_AUTHOR_EMAIL
GIT_AUTHOR_NAME
GIT_BRANCH
GIT_COMMIT
GIT_COMMITTER_EMAIL
GIT_COMMITTER_NAME
GIT_PREVIOUS_COMMIT
GIT_URL

Lastly, to see a less comprehensive list of available environment variables, you can also just go to this url: http://[your-jenkins-domain-and-port]/env-vars.html

Solution 4

The current build-number is provided as the Jenkins-variable BUILD_NUMBER

  • In Unix it is set for you as ${BUILD_NUMBER}
  • In Windows it is available as %BUILD_NUMBER%

The complete list of variables is available on your Jenkins server, at:
http://[your-jenkins-server]/env-vars.html

Solution 5

The Git plugin returns information from the checkout() command. In Pipeline script, this can be used to get the previous commit:

def scmVars = checkout scm

scmVars.GIT_PREVIOUS_COMMIT
Share:
12,669
Ray Nicholus
Author by

Ray Nicholus

http://raynicholus.com Author of Beyond jQuery: a book that aims to educate web developers and give them the confidence to abandon the crutch that is jQuery and embrace the power of the web API and JavaScript. Author of "You Don't Need jQuery!": a series of blog posts that blossomed into "Beyond jQuery", which was published in November of 2016. Fine Uploader lead developer. We're hiring @ Widen!

Updated on July 27, 2022

Comments

  • Ray Nicholus
    Ray Nicholus almost 2 years

    Near the top of my build console I see a "Last Built Revision:" w/ a revision #. How can I access this last built rev # in my build script? I'm using Gradle, but I don't think that matters here. Does Jenkins provide the last built rev # in a system property? Surely this must be trivial to access from my build script...