@ la risposta di takeshin va bene se si ha accesso al file build.xml, ma questo potrebbe interrompersi, specialmente se si sta costruendo su un nodo slave (poiché lo slave non ha il build.xml di riferimento).
Non temere, in quanto è possibile accedere a queste informazioni tramite Jenkins direttamente, utilizzando il suo api accesso remoto:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Ad esempio:
http://<host>/jenkins/job/<job_name>/lastSuccessfulBuild/api/xml
(vi darà il contenuto XML. .. è possibile sostituire xml con json per ottenere il contenuto JSON indietro invece di XML, ad esempio).
NOTA che potrebbe essere necessario utilizzare l'autenticazione se è stata configurata l'istanza Jenkins per richiederla. Ancora una volta, non temere: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients
Quindi è sufficiente analizzare l'XML per quello che vuoi. Qualcosa di simile, forse:
curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|'
Quindi, tirando tutti insieme, si può finire con un (relativamente) semplice script di shell per recuperare l'ultima buona hash di revisione da Jenkins:
#!/bin/sh
GIT_LOG_FORMAT="%ai %an: %s"
USER=<username>
API_TOKEN=<api_token>
LAST_SUCCESS_URL_SUFFIX="lastSuccessfulBuild/api/xml"
#JOB_URL gets populated by Jenkins as part of the build environment
URL="$JOB_URL$LAST_SUCCESS_URL_SUFFIX"
LAST_SUCCESS_REV=$(curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|')
# Pulls all commit comments since the last successfully built revision
LOG=$(git log --pretty="$GIT_LOG_FORMAT" $LAST_SUCCESS_REV..HEAD)
echo $LOG
Acclamazioni ,
Levi
+1 - molto migliore risposta –