¿Cómo generar changelog: git log desde la última compilation de Hudson?

Estoy usando Phing para hacer tareas de compilation en Hudson.

Quiero generar un logging de cambios que contenga todas las confirmaciones desde la última versión exitosa de Hudson. Pero parece que ni Hudson ni el complemento de Git para Hudson no proporcionan %last_build_time% variable.

Esta sería una solución satisfactoria, (¿pero cómo get el time?):

 git log --pretty="%s" --since="%last_build_time%" 

La única forma que veo ahora es extrayéndolo del file xml del trabajo, pero no sé si es posible con Phing.

¿Cómo se generan los loggings de cambio?

La respuesta de @ takeshin está bien si tiene acceso al file build.xml, pero esto puede romperse, especialmente si está construyendo en un nodo esclavo (ya que el esclavo no tiene el build.xml referencedo).

No temas, ya que puedes 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ía replace xml por json para recuperar contenido json en lugar de XML, por ejemplo).

TEN EN CUENTA que es posible que necesites utilizar la authentication si has configurado tu instancia de Jenkins para que la requiera. De nuevo, no temas: https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients

Entonces, es una simple cuestión de analizar el XML para lo que desea. Algo como esto, tal vez:

 curl --silent --user $USER:$API_TOKEN $URL | grep "<lastBuiltRevision>" | sed 's|.*<lastBuiltRevision>.*<SHA1>\(.*\)</SHA1>.*<branch>.*|\1|' 

Entonces, juntándolo todo, puedes terminar con un script de shell (relativamente) simple para recuperar el último hash de revisión bueno 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 

Aclamaciones,

Levi

He extraído la última date de compilation exitosa usando bash:

 git log --pretty="%s" --since="`date -r ./../lastSuccessful/build.xml "+%F %T"`" 

(En el file xml tuve que replace " with &quote; entity").