Wikipedia tiene una muy buena respuesta a esta pregunta. El artefacto , a veces también llamado objeto derivado , es producto de algún proceso aplicado al repositorio de código . Originalmente se llamaron Build Artifacts , pero a medida que se aplicaron más procesos además de build para crearlos, la primera palabra simplemente se eliminó.
La principal distinción es que los artefactos se pueden recrear desde el repositorio de código utilizando el mismo proceso, siempre que haya preservado el entorno en el que se aplicó el proceso. Como este proceso puede llevar mucho tiempo y el entorno se puede preservar de manera imperfecta para poder recrear los artefactos exactamente de la misma manera, comenzamos a almacenarlos en Repositorios de artefactos .
Almacenarlos aparte del repositorio de código en un repositorio de artefactos es una decisión de diseño que tomaría un ingeniero de DevOps. Algunas compañías, a saber, Perforce , sugieren utilizar también su repositorio de código como repositorio de artefactos. Existen diferentes requisitos en términos de acceso , auditoría , tamaños de objetos , etiquetado de objetos y escalabilidad en cada repositorio y, por lo tanto, según la situación, a menudo es mejor usar dos productos distintos. Por ejemplo Gitlos repositorios se copian en su totalidad en cada máquina de desarrollo, por lo que almacenar artefactos en el repositorio de código aumentaría su tamaño más allá de toda razón, aunque últimamente hay formas de mitigar esto. Otra decisión a tomar es qué artefactos almacenar. Algunas compañías almacenan incluso artefactos intermedios como archivos de objetos individuales, para acelerar las reconstrucciones, otras almacenan simplemente los binarios finales. No todos los artefactos tienen el mismo valor. Los artefactos resultantes de una compilación de lanzamiento podrían tener requisitos diferentes a los artefactos resultantes de una compilación de desarrollador.
Los artefactos más comunes son el resultado de los siguientes procesos: configuración , preprocesamiento , compilación , vinculación , pruebas automatizadas , archivado , empaquetado , creación y procesamiento de archivos multimedia , generación de archivos de datos , análisis de documentación , análisis de código , control de calidad , etc.