¿Se puede configurar Hudson para build cada revisión?

Empecé a experimentar con Hudson como server de compilation. Estoy usando subversion y lo tengo configurado para sondear cada minuto. El problema que estoy viendo es que si una compilation en la revisión 10 tarda 5 minutos y hay 5 confirmaciones durante ese time, Hudson comstackrá próximamente la revisión 15.

¿Hay alguna manera de garantizar que se construya cada revisión?

Hudson todavía no tiene esta capacidad, pero se le ha solicitado algunas veces en la list de correo. Ver el número 673

Tienes que hacer algunas cosas para build exactamente cada revisión:

  • agregue un parámetro de cadena de REVISION a su trabajo
  • añada el parámetro ${REVISION} a la URL del repository,
    por ejemplo: https://server/path/myproject${REVISION}
  • establezca el nombre de la carpeta local en 'myproject' (vea el ejemplo anterior), porque la variable REVISION solo se expande en la URL, pero cuando crea la carpeta, Hudson no la expande, lo que da como resultado una carpeta llamada: myproject${REVISION}
  • desencadenar la compilation parametrizada desde el /usr/bin/wget \ --auth-no-challenge \ --no-check-certificate \ --user=me \ --password=mypasswd \ https: //server/path/job/jobname/buildWithParameters?delay=0sec\&REVISION=%40$REV \ -O /dev/null post-commit, así: /usr/bin/wget \ --auth-no-challenge \ --no-check-certificate \ --user=me \ --password=mypasswd \ https: //server/path/job/jobname/buildWithParameters?delay=0sec\&REVISION=%40$REV \ -O /dev/null

Si desea activar una compilation manualmente, tiene dos posibilidades:

  • si desea comstackr la revisión HEAD, debe dejar el parámetro REVISION en blanco
  • si desea build una revisión específica, debe ingresar @NNN (por ej., @ 1234).

El signo @ es muy importante porque todo este truco se basa en el hecho de que el plugin de Subversion interpreta URL@NNN como get revision NNN from repository at URL . Si olvida el @ , Subversion simplemente dirá que no puede encontrar la carpeta https://server/path/myprojectNNN . También es por eso que debe poner %40 entre REVISION= y $REV en el command wget, %40 es el carácter escapado para @ .

En SCM, parte de la configuration de compilation, debe tener la sección Disparadores de compilation y la opción "Generar desencadenantes de forma remota (p. Ej., A partir de secuencias de commands)". De acuerdo con la información de ayuda al lado de esa opción, puede realizar un script de acción de post-commit para que cada confirmación inicie una compilation nueva. Como hudson tiene la queue de compilation, debería tener todas las revisiones creadas.

Aquí hay un enlace que podría ayudarlo: https://hudson.dev.java.net/build.html

Aquí hay un ejemplo de cómo iniciar trabajos de construcción con parameters (ver mi comentario para más detalles): http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build

La key para asegurarse de que cada confirmación se construye en Hudson es "Creación parametrizada" y SÓLO SI se genera una activación con diferentes valores de parameters, hudson pensará que es una compilation nueva y se mantendrá en la queue de compilation. O no será registrado por Hudson ya que considera que es una creación sin sentido en comparación con la anterior

por ejemplo, puede hacer clic en "Crear ahora" para activar la compilation tres veces y simplemente dejar la compilation para como "nula". verá que solo las primeras dos comstackciones se encuentran en la queue de Hudson. El tercero será ignorado: P genial, pero es realmente malo que no se encuentre en algún documento, pero con mis experimentos para los times 🙁

Tomé el enfoque de Fchateaus arriba (¡gracias, amigo!) Y lo modifiqué para trabajar con Mercurial.

Deberá editar .hg / hgrc en el server central y colocar un enlace de grupo de cambios. Tenga en count que changegroups solo establece el primer set de cambios en la variable de entorno HG_NODE, por lo que debe hacer una sugerencia de hg para captar el nodo de sugerencia real y pasarlo a través de la URL en su lugar. Un pequeño truco para hacer en una línea, pero lo descubrí.

Esto es lo que harías por Hudson corriendo en Windows .

 [hooks] # this uses wget to hit the hudson url responsible for starting a build - %HG_NODE% only gets first changeset of changegroup, so use hg tip to grab changeset most recently added instead changegroup.hudson = for /f "tokens=*" %G IN ('hg tip --template {node}') DO "C:\Program Files (x86)\UnxUtils\usr\local\wbin\wget" --non-verbose --spider http://HudsonServer:8080/job/{Repository}/buildWithParameters?HgRevId=%G | ECHO Result of Hudson Polling Request For Node %G # TODO: when Hudson implements polling with parameters, change to something like this #changegroup.hudson = for /f "tokens=*" %G IN ('hg tip --template {node}') DO "C:\Program Files (x86)\UnxUtils\usr\local\wbin\wget" --non-verbose --spider http://HudsonServer:8080/job/{Repository}/polling?HgRevId=%G | ECHO Result of Hudson Polling Request For Node %G