Puede utilizar el Remote Access API Jenkins para obtener una descripción legible por máquina de la versión actual, incluyendo su conjunto completo de cambios. La sutileza aquí es que si tiene configurado un 'período de silencio', Jenkins puede agrupar múltiples confirmaciones en el mismo repositorio en una única compilación, por lo que depender de un único número de revisión es un poco ingenuo.
Me gusta mantener mis ganchos de post-commit de Subversion relativamente simples y entregarlos al servidor de CI. Para ello, utilizo wget para desencadenar la acumulación, algo como esto ...
/usr/bin/wget --output-document "-" --timeout=2 \
https://ci.example.com/jenkins/job/JOBID/build?token=MYTOKEN
El trabajo se configura en el lado Jenkins para ejecutar un script en Python que aprovecha la variable BUILD_URL
medio ambiente y construye la URL para la API de eso. La URL termina pareciéndose a esto:
https://ci.example.com/jenkins/job/JOBID/BUILDID/api/json/
Aquí hay un código de Python muestra que se pueda ejecutar dentro de la secuencia de comandos shell. He omitido el manejo de errores o la autenticación HTTP para que todo sea legible aquí.
import os
import json
import urllib2
# Make the URL
build_url = os.environ['BUILD_URL']
api = build_url + 'api/json/'
# Call the Jenkins server and figured out what changed
f = urllib2.urlopen(api)
build = json.loads(f.read())
change_set = build['changeSet']
items = change_set['items']
touched = []
for item in items:
touched += item['affectedPaths']
"parece querer cambiar el comportamiento de la compilación según los archivos modificados" Esto se hace, por ejemplo, con las compilaciones incrementales de Maven (complemento). –