2012-05-10 14 views
9

Tengo un trabajo de compilación de Jenkins que desencadena múltiples trabajos de prueba con el nombre de la prueba como parámetro usando el complemento de activación paramétrica Jenkins. Esto inicia una serie de compilaciones de prueba en varios ejecutores que se ejecutan correctamente.Agregando resultados de trabajos parametrizados aguas abajo en Jenkins

Ahora quiero agregar los resultados utilizando 'resultados agregados de la prueba en sentido descendente-> Agregue automáticamente todas las pruebas en sentido descendente'. He habilitado esto en el trabajo de compilación y he configurado la toma de huellas digitales para que se reconozcan como tareas posteriores. En la página de los puestos de trabajo Construir lastBuild puedo ver que están reconocidas como aguas abajo construye:

Construye Aguas abajo

Prueba # 1- # 3

Cuando hago clic en "Test Resultados agregados" sin embargo, solo muestra la última de ellas (Prueba n. ° 3). Esto puede ser un buen comportamiento si el trabajo siempre ejecuta las mismas pruebas, pero las mías ejecutan diferentes partes de mi conjunto de pruebas.

¿Hay alguna forma de que pueda obtener esto para agregar todas las compilaciones de prueba en sentido descendente relevantes?

Adicional: Los resultados de prueba agregados funcionan si se replica el trabajo de prueba. Esto no es ideal ya que tengo una gran cantidad de suites de prueba.

+1

He tenido tantos problemas con la agregación de los resultados de las pruebas posteriores que terminé agregándolos "manualmente" a mí mismo: esperando hasta que finalicen los trabajos y copie los informes de prueba a los padres. –

+0

Al tener la agregación automática funcionando (al replicar un trabajo) puedo ver que no es realmente lo que esperaba (no fusiona las jerarquías de prueba ni agrega gráficos). Aceptaría una solución que lo hizo manualmente, para trabajos parametrizados. –

Respuesta

3

Voy a esbozar la solución manual (como se ha mencionado en los comentarios), y proporcionar más detalles si los necesita más tarde:

Vamos P ser el trabajo de los padres y D ser un trabajo corriente abajo (puede extender fácilmente el enfoque a múltiples trabajos indirectos).

  1. Una instancia (build) de P invoca D través Parameterized Trigger Plugin a través de un paso de generación (no como un paso posterior a la generación) y espera a que D 's para terminar. Junto con otros parámetros, P pasa a D un parámetro - llamémosla PARENT_ID - basado en la acumulación de P 's ID_creación.
  2. D ejecuta las pruebas y las archiva como artefactos (junto con los informes jUnit, si corresponde).
  3. P continuación, ejecuta una pitón externa (o interna maravilloso) script que se encuentra la construcción adecuada de D través PARENT_ID (iterar sobre obra de D y examinar el valor de parámetro PARENT_ID). El script luego copia los artefactos de D a P y P los publica.

Si utilizo Python (eso es lo que hago) - utilice Python JenkinsAPI wrapper.Si usa Groovy, utilice Groovy Plugin y ejecute su secuencia de comandos como secuencia de comandos del sistema. A continuación, puede acceder a Jenkins a través de su Java API.

+0

El problema con ese flujo es que P aún no habrá archivado sus artefactos. Normalmente probarías los artefactos, por lo que tendrías que dividirlos aún más. – Wernight

+0

@malenkiy_scot dijiste "que encuentra la compilación adecuada de D a través de PARENT_ID". No sé lo que significa exactamente. ¿Qué ha hecho D con Parent_Id que ahora uno puede buscar sus contenidos? ¿Archivó los resultados de la prueba como un archivo ZIP y ese nombre de archivo zip es parent_id? –

Cuestiones relacionadas