-
-
Save ftclausen/8c46195ee56e48e4d01cbfab19c41fc0 to your computer and use it in GitHub Desktop.
// -*- mode: groovy -*- | |
// vim: set filetype=groovy : | |
node( 'some_node' ) { | |
stage( "Phase 1" ) { | |
sshagent( credentials: [ 'some_creds' ] ) { | |
checkout scm | |
def lastSuccessfulCommit = getLastSuccessfulCommit() | |
def currentCommit = commitHashForBuild( currentBuild.rawBuild ) | |
if (lastSuccessfulCommit) { | |
commits = sh( | |
script: "git rev-list $currentCommit \"^$lastSuccessfulCommit\"", | |
returnStdout: true | |
).split('\n') | |
println "Commits are: $commits" | |
} | |
} | |
} | |
} | |
def getLastSuccessfulCommit() { | |
def lastSuccessfulHash = null | |
def lastSuccessfulBuild = currentBuild.rawBuild.getPreviousSuccessfulBuild() | |
if ( lastSuccessfulBuild ) { | |
lastSuccessfulHash = commitHashForBuild( lastSuccessfulBuild ) | |
} | |
return lastSuccessfulHash | |
} | |
/** | |
* Gets the commit hash from a Jenkins build object, if any | |
*/ | |
@NonCPS | |
def commitHashForBuild( build ) { | |
def scmAction = build?.actions.find { action -> action instanceof jenkins.scm.api.SCMRevisionAction } | |
return scmAction?.revision?.hash | |
} |
@NonCPS
def commitHashForBuild( build ) {
def scmAction = build?.actions.find { action -> action instanceof jenkins.scm.api.SCMRevisionAction }
return scmAction?.revision?.hash
}
Does this only works with multibranch pipeline jobs and doesnot work with regular jobs? This doesnot seem to work for me for regular jobs..
in a multi branch pipeline there is a env var exposed GIT_PREVIOUS_COMMIT
. This seems to be the commit of the last build however regardless of pass fail.
Is there a way i can get the getLastSuccessfulCommit in a Declarative Pipeline ?
GIT_PREVIOUS_SUCCESSFUL_COMMIT
is the environment variable exposed by jenkins build and provides the last successful build git commit.
GIT_PREVIOUS_SUCCESSFUL_COMMIT
is the environment variable exposed by jenkins build and provides the last successful build git commit.
simple variable! it works.
Thank you!