¿Cómo puede jenkins downstream enviar notificación por correo electrónico a los committers de upstream git por correo electrónico?

esta pregunta es sobre cómo enviar correos electrónicos a los committers de git que rompieron las testings de integración en un trabajo posterior, en jenkins, y ver la list de cambios en el trabajo downstream.

No he intentado todo lo que escribí aquí, así que podría estar equivocado, estas son impresiones del código que encontré.

aparentemente hay muchos bashs de responder a esta pregunta, pero ninguno parece satisfactorio, así que lo explicaré más detalladamente. detalles a continuación:

solíamos trabajar con svn. nuestra jerarquía de trabajo fue un trabajo que se verifica y comstack, y desencadena otros trabajos que toman los artefactos de compilation y ejecutan testings de integración misceláneas.

los correos electrónicos deben enviarse a los commiters svn ascendentes que rompieron la compilation.

nos gusta enviar correos electrónicos a través del complemento de correo electrónico-ext (https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin) porque es muy personalizable y usamos esta funcionalidad en gran medida.

El complemento ext de correo electrónico utiliza el changelog.xml del trabajo actual para descubrir quién rompió la compilation. dado que changelog.xml es creado por la operación de pago, existe en el trabajo de subida. por lo tanto, email-ext no parece saber a quién debe enviar un correo electrónico.

Si decide include a los culpables, puede iniciar sus jenkins con -Dhudson.upstreamCulprits = true, lo que cambia el comportamiento de e-mail, pero eso no lo ayudará si no desea include los culpables. Además, el set de cambios no parece estar disponible en el trabajo posterior.

también hay un plugin de committers culpable, pero parece que no funciona bien con email-ext.

upstreamCulprits y culpa-upstream parecen necesitar huellas dactilares, y preferiríamos no hacerlo porque tenemos MUCHOS files y MUCHOS trabajos … esto tenía serios problemas de performance.

resolvimos nuestro problema con el complemento BlameSubversion (https://wiki.jenkins-ci.org/display/JENKINS/BlameSubversion). aparentemente copy el changelog.xml del proyecto ascendente que desencadenó este trabajo, por lo que cuando este trabajo falla y busca usuarios que rompieron la compilation en el logging de cambios, puede encontrarlos y también aparecen en el logging de cambios.

así que estábamos muy contentos, sobre svn. ahora, migramos a git. no hay un complemento de Blame Git. no nos importa escribir uno. solo tenemos que entender si deberíamos. la gente ha estado usando git y jenkins juntos durante bastante time. no podemos ser los primeros en toparse con esta dificultad …

gracias, Nathan.

Esta es la forma en que lo hago con Clearcase, debería ser bastante similar en svn. En el área donde ingresa la list de direcciones para recibir el correo electrónico, agregue lo siguiente:

, $ {SCRIPT, script = "committers.groovy"}

Cree un nuevo script, committers.groovy en $ JENKINS_HOME / email-templates con algo como lo siguiente:

// the goal is to find the top level job which should contain the changelist def upstreamBuild = null def cause = build.causes.find { if(it instanceof hudson.model.Cause.UpstreamCause) { return true } return false } try { while(cause != null) { upstreamBuild = hudson.model.Hudson.instance.getItem(cause.upstreamProject).getBuildByNumber(cause.upstreamBuild) if(upstreamBuild == null) { break; } cause = upstreamBuild.causes.find { if(it instanceof hudson.model.Cause.UpstreamCause) { return true } return false } } } catch(e) { // do nothing } // now we loop through the changeset and add all the users to a list committers = [] if(upstreamBuild != null && upstreamBuild.changeSet != null) { upstreamBuild.changeSet.each() { cs -> if(cs.user != null) { committers.add(cs.user) } } } committers.unique().join(',') 

Esto generará una cadena que replaceá el token de contenido $ {SCRIPT} con la list de committers del trabajo de subida.