2011-12-23 14 views
6

utilizo Jenkins para ejecutar algunas pruebas de integración en un appilcation web (usando el pepino, el capibara y selenio)Jenkins generación falla cuando los artefactos no están allí

Cada una prueba falla, una captura de pantalla, el código HTML y un video de el proceso está guardado

estructura de la trayectoria se ve así:

results/output/<test_name>/<files> 

utilizo la función de los artefactos archivo de Jenkins para proporcionar los archivos (patrón: results/output/*/*). Funciona muy bien.

Sin embargo, tan pronto como una compilación tiene éxito, no hay capturas de pantalla/videos, etc ... y la construcción falla porque Jenkins no puede encontrar los archivos para el patrón.

¿Hay alguna manera de decirle a Jenkins que tenga éxito sin tener los archivos presentes?

No quiero hacer un hack sucio que implica la creación de una estructura de carpeta vacía como result/output/success/hooray.txt.

+0

Buena pregunta; ¡Me preguntaba exactamente lo mismo! – Jonik

Respuesta

4

Me encontré con un problema similar en algunos de nuestros proyectos. Hay dos formas diferentes de resolverlo (en dos compilaciones diferentes).

1) Se agregó un comando a los pasos de compilación que crea un archivo temporal falso si ya no existían archivos.

En este caso, estaba destinado a recopilar un archivo de salida.pdf que se generaría si las pruebas fallaran. Agregué un paso de compilación en el que, si ese archivo no existía, creamos un archivo "missing.pdf". Entonces lo que colecciono como artefactos es '* .pdf' del directorio dado. Esto parece funcionar bastante bien.

2) En otra compilación, necesitábamos recopilar un conjunto de archivos usando un glob.

Lo que hicimos aquí fue hecho para que el paso de creación siempre cree un solo archivo vacío en el área de destino. De esa manera, el globo siempre coincide con algo.

Esas son las mejores soluciones que hemos encontrado hasta ahora. Si encuentras algo mejor, me encantaría saberlo.

+0

Agregué un paso que creó un archivo success.txt cuando la carpeta estaba vacía después de la compilación – leifg

13

Hay un problema abierto por que: https://issues.jenkins-ci.org/browse/JENKINS-10502

El comportamiento es controlado por la propiedad del sistema hudson.tasks.ArtifactArchiver.warnOnEmpty, como se explica en https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties

+1

+1, creo que esta es la respuesta correcta. (Si alguien más se pregunta cómo hacer que esto funcione con Jenkins corriendo en Debian/Ubuntu, edite '/ etc/default/jenkins' y ponga' -Dhudson.tasks.ArtifactArchiver.warnOnEmpty = true' en ** JAVA_ARGS ** (o posiblemente JENKINS_JAVA_OPTIONS). JENKINS_ARGS no funcionará, al menos si tiene más de una propiedad -D! – Jonik

+2

Aún así, cuando alguien comenta el problema al que se ha vinculado, es una pena que no se pueda configurar con una casilla de verificación en la interfaz de usuario de Jenkins una por trabajo. – Jonik

Cuestiones relacionadas