@ La respuesta de Takehin está bien si tiene acceso al archivo build.xml, pero esto puede romperse, especialmente si está construyendo en un nodo esclavo (ya que el esclavo no tiene el build.xml referenciado).
No temas, ya que se puede acceder a esta información a través de Jenkins directamente, usando su API de acceso remoto:
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
Por ejemplo:
http://<host>/jenkins/job/<job_name>/lastSuccessfulBuild/api/xml
(le dará el contenido XML. ... podrías reemplazar xml con json para recuperar el contenido json en lugar de XML, por ejemplo).
OBSERVAR que puede necesitar la autenticación si configuró su instancia de Jenkins para requerirla. Nuevamente, no temas: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients
Luego es una simple cuestión de analizar XML para lo que quieras. Algo como esto, tal vez:
curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|'
Así, tirando de él todos juntos, usted puede terminar con un (relativamente) simple script de shell para recuperar la última buena hash de la revisión de 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
Saludos ,
Levi
+1 - mucho mejor respuesta –