2010-02-15 10 views
5

Existen 4 empleos:¿Cómo ejecutar trabajos en Hudson en algún orden predefinido?

Build1 
Build2 
Test1 
Test2 

Build1 y Build2 se puede iniciar de forma simultánea.
Test1 debe iniciarse solo cuando se completen Build1 y Build2.
Tes2 debe iniciarse solo cuando haya terminado Tes1.
También me gustaría tener la capacidad de comenzar todos estos trabajos por separado.
¿Hay alguna forma de configurar trabajos según estas reglas?

Respuesta

4

Al crear un nuevo trabajo, normalmente puede especificar qué proyecto en sentido ascendente debe construirse para comenzar este trabajo.

Esta opción está en Disparadores de compilación -> Compilar después de que se hayan creado otros proyectos al crear/modificar un trabajo.

+0

Me gustaría iniciar ** Build1 ** y ** Build2 ** simultáneamente. Pero no puedo configurar ** Test1 ** para iniciarlo cuando terminen ** Build1 ** y ** Build2 **. Es posible iniciar ** Test1 ** cuando ** Build1 ** o ** Build2 ** finalicen. ¿Estoy en lo cierto? –

+0

También deberá marcar "Bloquear compilación cuando se está construyendo un proyecto en sentido ascendente" en Opciones de proyecto avanzadas. Esto evitará que Test1 se genere si Build1 o Build2 están en la cola. –

+0

No tengo esa opción. ¿Qué versión de Hudson usas? –

2

Creo que tiene varias opciones. Mi suposición es que estamos hablando de trabajos de larga ejecución, de lo contrario, los uniría como un trabajo monstruoso (varios pasos de compilación en un trabajo) y crearía trabajos separados para ejecutarlos individualmente.

Como se mencionó, para trabajos de larga ejecución, eche un vistazo a join plugin. Como un FYI general, hay una página que explica por qué desea separar los trabajos de prueba de los trabajos de construcción. Ver here.

+0

El complemento Join es la clave aquí. –

0

Estoy ejecutando la versión 1.346 de Hudson.

Puede verificar 'Generar después de construir otros proyectos' en 'Generar activadores'.

Se dice que "los proyectos se pueden especificar múltiples como 'abc, def'"

Así que debería ser capaz de añadir 'Build1, Build2' a ese campo en la configuración para Prueba1.

+0

Desde el texto de ayuda para 'construir después de que los proyectos se compilen': * Configure un activador para que cuando otros proyectos terminen de construirse, se programe una nueva compilación para este proyecto. Esto es conveniente para ejecutar una prueba exhaustiva después de completar una compilación, por ejemplo. * - por lo tanto, esencialmente, la Prueba1 se activará cuando se realice la compilación uno o dos, no después de que se completen dos. En este caso particular, es posible que pueda sortear ese problema con el complemento de bloqueos y bloqueos. –

0

Puede mantener su Test1 & Test2 como trabajos separados, en lugar de formar parte de las compilaciones.

Cuando se completan Build1 y Build2, Test1 puede comenzar como una construcción descendente. Test2 puede ser un trabajo posterior de Test1.

1

El "Complemento de compilaciones promocionadas" puede ser una buena solución: puede configurar un trabajo maestro "Compilar" para hacer nada más que iniciar 2 compilaciones descendentes "Build1, Build2" (en acciones posteriores a la compilación). Luego debe agregar un proceso de promoción "Cuando los siguientes proyectos descendentes se compilan correctamente" seleccionando "Build1, Build2", con una acción de compilación indirecta asociada de "Test1". Si "Build1" y "Build2" se construyen con éxito (ambos estados ESTABLE), se promoverá "Build" y se pondrá en cola "Test1". Finalmente, activa Test2 como una acción posterior a la construcción de Test1.

Pero debe tener en cuenta que en caso de que se encuenten muchas instancias de "Build", no puede confiar en el último enlace permanente de compilación exitoso (es posible que el siguiente "Build1" o "Build2" ya se haya creado cuando se invocó "Test1" la primera "compilación" saldrá de la cola), y tendrá que idear una forma de realizar un seguimiento de la revisión de la compilación que está probando.

El Complemento disparador parametrizado puede ayudar a resolver este problema: por ejemplo, podría pasar el Id. De compilación ascendente como parámetro.

Cuestiones relacionadas