En una publicación de blog sobre la creación de un entorno de desarrollo dockerizado, hay una sección donde se dan la siguiente pregunta y la respuesta del primer párrafo:
¿Qué tipo de artefactos de construcción quieres?
El artefacto de compilación que quería en este ejemplo era un contenedor en ejecución. O Compose o Docker habrían sido herramientas apropiadas para ese fin. En su escenario, es posible que prefiera tener una imagen distribuible o que la compilación produzca un binario en el sistema operativo de su host.
Leí en otra pregunta que un artefacto puede ser cualquier cosa creada durante un proceso. Al leer otras respuestas, parece que el contexto en el que se usa el término es importante.
En el contexto del uso de Docker para crear un entorno de desarrollo, ¿qué significa construir artefacto ?
Environment + Compiled output = Artifact .Es decir, el entorno completo, incluidas todas las herramientas, dependencias, etc., necesarios para compilar el código fuente ( imagen ), + el resultado construido/compilado ( runnables/libs ) , ¡con este último almacenado dentro del primero!
De esta manera, en caso de un bloqueo/error, todo está ahí para usted, listo para ser depurado sin importar en qué versión vieja y polvorienta de su software ocurrió el problema. *
*: No incluí la fuente en la descripción anterior, pero eso también podría ser preferible. De lo contrario, dado que todos usamos el control de versiones, se puede montar después si es necesario.
(nota de comentarios)
"Artefacto" es simplemente una palabra para algo que se produce; en este contexto, un subproducto al desarrollar software. Entonces, los ejecutables/libs son los artefactos producidos al compilar la fuente, y la imagen es el artefacto producido por todo el paso de "construcción", ¡básicamente un artefacto que contiene uno o más artefactos!
Esto tiene más sentido cuando comienza a trabajar con canalizaciones automatizadas de compilación, prueba e implementación (también conocido como Entrega continua ).
Nota 1:
Este sería el resultado final, por lo tanto, la forma en que elija configurar los pasos hasta este punto depende de usted ( enfoque de imagen dividida, etc.).
Nota 2:
Recientemente comencé a jugar con la ventana acoplable en combinación con la entrega continua, por lo que estos son solo mis dos centavos iniciales :)
En términos de canalizaciones de compilación en general, el artefacto es el componente de software que se produce durante la compilación, se almacena en un repositorio y finalmente se implementa en sus diferentes entornos.
Para aplicaciones Java no dockerizadas, esto suele ser un JAR/WAR. Para aplicaciones dockerizadas, esta suele ser una imagen que contiene el JAR/WAR.