¿Podría alguien explicarme la idea de los artefactos en el proceso de construcción?
Tengo el directorio del espacio de trabajo donde reviso el código para compilar y ejecutar mis scripts de hormiga, 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 coloque el archivo jar? En el directorio del espacio de trabajo? 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: Bien, entonces intenté hacer algo como esto:
La ruta aún no existe 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 falta algo.
Además, ¿Jenkins elimina los artefactos después de cada compilación (no los artefactos archivados, sé que puedo decir que los elimine)? De lo contrario, obstruirá el disco duro con bastante rapidez.
Respuestas:
Su comprensión es correcta, un artefacto en el sentido de Jenkins es el resultado de una compilación: el resultado previsto del proceso de compilación.
Una convención común es poner el resultado de una acumulación en una
build
,target
obin
directorio.El archivador Jenkins puede usar globs (
target/*.jar
) para recoger fácilmente el archivo correcto incluso si tiene un nombre único por compilación.fuente
sh 'mvn clean package'
Un artefacto puede ser cualquier resultado de su proceso de construcción. Lo importante es que no importa en qué cliente se haya creado, 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.
fuente
No, Hudson / Jenkins, por sí solo, no borra el espacio de trabajo después de una compilación. Es posible que tenga acciones en su proceso de construcción que borren, sobrescriban o muevan artefactos de construcción desde donde los dejó. Hay una opción en la configuración del trabajo, en Opciones de proyecto avanzadas (que debe ampliarse), llamada "Limpiar el espacio de trabajo antes de la compilación" que borrará el espacio de trabajo al comienzo de una nueva compilación.
fuente
En Jenkins 2.60.3 hay una manera de eliminar los artefactos de compilación (no los artefactos archivados) para ahorrar espacio en el disco duro de la máquina de compilación. En la sección General, marque "Descartar compilaciones antiguas" con la estrategia "Rotación de registro" y luego vaya a sus Opciones avanzadas. Aparecerán dos opciones más relacionadas con el mantenimiento de artefactos de compilación para el trabajo en función del número de días o compilaciones.
La configuración que funciona para mí es ingresar 1 para "Número máximo de compilaciones para mantener con artefactos" y luego tener una acción posterior a la compilación para archivar los artefactos. De esta forma, se archivarán todos los artefactos de todas las compilaciones, se guardará toda la información de las compilaciones, pero solo la última compilación conservará sus propios artefactos.
Descartar opciones de compilaciones antiguas
fuente