Archive los artefactos en Jenkins


¿Podría alguien explicarme la idea de artefactos en el proceso de construcción?

Tengo el directorio workspace donde compruebo el código para compilar y ejecutar mis scripts ant, etc. Al final, en mi caso, obtengo un archivo jar que está listo para instalar. ¿Se considera que es el artefacto?

¿Dónde debo decirle a mi script de compilación que ponga el archivo jar? ¿En el directorio workspace? Mi archivo jar obtiene un nombre de archivo único dependiendo de variables como BUILD_ID y tales, ¿cómo puedo ¿decirle a Jenkins qué archivo jar elegir?

EDITAR: Vale, así que intenté hacer algo como esto:

introduzca la descripción de la imagen aquí

La ruta no existe todavía en mi espacio de trabajo, porque se supone que el script de compilación lo crea, y por supuesto, los archivos .jar y .properties no están allí porque aún no se han generado. ¿Por qué me da un error entonces? Parece que me estoy perdiendo algo.

Además, Jenkins elimina los artefactos después de cada compilación (no los artefactos archivados, sé que puedo dile que borre esos)? De lo contrario se obstruirá el disco duro muy rápidamente.

Author: Michael, 2011-04-28

4 answers

Su comprensión es correcta, un artefacto en el sentido de Jenkins es el resultado de una compilación - la salida prevista del proceso de compilación.

Una convención común es poner el resultado de una construcción en una build, target o directorio bin.

El archivador Jenkins puede usar globs (target/*.jar) para recoger fácilmente el archivo correcto, incluso si tiene un nombre único por compilación.

 59
Author: Anders Lindahl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-28 16:24:39

Un artefacto puede ser cualquier resultado de su proceso de compilación. Lo importante es que no importa en qué cliente se construyó, se transferirá del espacio de trabajo al maestro (servidor) y se almacenará allí con un enlace a la compilación. La ventaja es que está versionada de esta manera, solo tiene que configurar la copia de seguridad en su maestro y que todos los artefactos son accesibles a través de la interfaz web, incluso si todos los clientes de compilación están fuera de línea.

Es posible definir una expresión regular como el nombre del artefacto. En mi caso, comprimí todos los archivos que quería almacenar en un archivo con un nombre constante durante la compilación.

 9
Author: Matthias Alleweldt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-28 16:14:20

Además, ¿Jenkins elimina los artefactos después de cada compilación ? (no los artefactos archivados, sé que puedo decirle que los elimine)

No, Hudson/Jenkins, por sí solo, no borra el espacio de trabajo después de una compilación. Usted podría tener acciones en su proceso de construcción que borrar, reescribir, o mover construir artefactos de donde los has dejado. Hay una opción en la configuración del trabajo, en Opciones de Proyecto Avanzadas (que debe expandirse), llamada "Limpiar espacio de trabajo antes de construir" que borra el espacio de trabajo al principio de una nueva compilación.

 7
Author: Codex24,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-09 17:06:01

En Jenkins 2.60.3 hay una manera de eliminar artefactos de compilación (no los artefactos archivados) para ahorrar espacio en el disco duro en la máquina de compilación. En la sección General, marque "Descartar compilaciones antiguas" con la estrategia "Rotación de registros" y luego vaya a sus Opciones avanzadas. Aparecerán dos opciones más relacionadas con mantener artefactos de compilación para el trabajo en función del número de días o compilaciones.

Las configuraciones que funcionan para mí son ingresar 1 para "Número máximo de compilaciones que mantener con artefactos" y luego tener una acción posterior a la construcción para archivar los artefactos. De esta manera, todos los artefactos de todas las compilaciones se archivarán, toda la información de las compilaciones se guardará, pero solo la última compilación conservará sus propios artefactos.

Descartar opciones de compilaciones antiguas

 1
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-28 17:55:29