jenkins - delivery - ¿Cómo pasar ${CHANGES} al trabajo downstream?
jenkins online (2)
Tengo un trabajo upstream que sondea a SVN por cambios. Si se detectan cambios, la compilación se inicia. Después de la compilación, el proyecto ascendente llama a un proyecto en sentido descendente para ejecutar la prueba. Estoy usando "Trigger Parameterized Build".
Quiero que el proyecto de downstream pueda enviar un correo electrónico con los resultados de las pruebas y los cambios de SVN que causan la compilación / prueba. Pero el problema es que si uso la variable $ {CHANGES} en sentido descendente, parece estar vacía.
¿Cómo puedo pasar $ {CHANGES} del proyecto original al proyecto downstream?
Puede obtener el conjunto de cambios o los valores que necesita con la secuencia de comandos groovy:
def jenkins = Jenkins.getInstance()
def job = jenkins.getItem(jobName)
def bld = job.getBuildByNumber(buildNumber)
def changeSet = bld.getChangeSet()
luego depende de qué plugin de scm uses, por ejemplo, con git-plugin puedes:
obtener la revisión de cada cambio:
changeSet.each{
println it.getRevision()
}
recibe un mensaje para cada cambio:
changeSet.each{
println it.getMsg()
}
obtener caminos afectados:
changeSet.each{
println it.getAffectedPaths()
}
obtener el nombre del autor:
changeSet.each{
println it.getAuthorName()
}
y muchas más acciones
Vi un Complemento de todos los cambios que actualiza la página de cambios. No sé si $ Changes también se llena con esa información.
Si eso no funciona, eche un vistazo a Obtenga acceso a Build Changelog en Jenkins