La pregunta sobre " ¿Qué es un repositorio de artefactos? " Contiene una respuesta con una explicación interesante sobre la parte del repositorio. Y al leer la respuesta completa, no estoy seguro de qué significa exactamente un " artefacto " en el contexto de DevOps.
¿Alguna sugerencia?
PD: De una de las respuestas, parece que entiendo que tal vez el artefacto es lo que me pregunto (¿confundido?) Sobre ...
terminology
artifacts
Pierre.Vriens
fuente
fuente
Respuestas:
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.
fuente
Hay dos usos de la palabra "artefacto" y uno hace que el código fuente sea un artefacto, mientras que el segundo hace que no sea un artefacto: ¡esto puede ser bastante confuso!
"Artefacto" como una cosa concreta, frente a una cosa ideal : este significado es el significado común de la palabra "un objeto hecho por un ser humano, típicamente uno de interés cultural o histórico" y no es una jerga técnica. Aquí hay un ejemplo en contexto técnico: cuando depura un software, aprende algo sobre el software. A menudo es una inversión valiosa convertir este aprendizaje en un artefacto de software, como una prueba de regresión. De lo contrario, este aprendizaje se olvidará y se desperdiciará el esfuerzo realizado para adquirirlo. En este sentido, el código fuente se considera un artefacto.
"Artefacto" como algo producido por una receta : este significado utiliza la imagen popular del alquimista usando alguna receta esotérica para producir un dispositivo mágico, a menudo llamado artefacto. Es una jerga técnica utilizada para distinguir entre el código fuente, que corresponde a la receta en la metáfora del alquimista, y cualquier cosa derivada de ese código fuente, que corresponde a un artefacto en la metáfora del alquimista. Por ejemplo , acabo de automatizar la producción de artefactos para mi programa plop-fizz, ¡ahora se pueden instanciar tarballs de origen, archivos de firma, paquetes DEB y RPM en un solo comando! Este significado no reconoce el código fuente como un artefacto, ya que el término se usa para denotar lo que se produce a partir de este código fuente.
fuente
Supongo que la respuesta puede variar de un lugar a otro. Cuando trabajo en este momento, un artefacto es cualquier cosa consumida por alguna otra entidad, excepto el código fuente utilizado para el desarrollo; esto entra en el control de la fuente.
Esto incluye archivos binarios del producto u otros productos necesarios, bibliotecas, archivos de objetos, artefactos de prueba como archivos multimedia o datos de prueba.
El código fuente no se considera un artefacto. A menos que coincida con la definición de "consumido por", en nuestro caso, incluidas las bibliotecas de terceros, el código de script utilizado para pruebas u otros fines (pero no con la versión de desarrollo en sí).
fuente
Nota al margen sobre el lado de la cultura. Mientras que en DevOps consideramos el concepto de "repositorio de artefactos" como una situación dada, parece que no hay tanto vínculo con el proceso organizacional.
Problema cultural: si una organización usa ITIL, las personas certificadas dirían "necesitamos tener una biblioteca multimedia definitiva, un repositorio para colocar los elementos de configuración de software que hemos producido". Por lo tanto, las personas que se preocupan por procesos de TI bien estructurados no saben qué herramientas (que no son de administración) son compatibles y están en uso. Viceversa, si necesita una justificación para un lenguaje Nexus o Artifactory, podría tener dificultades para explicarlo dependiendo de la organización.
Lectura adicional: https://en.wikipedia.org/wiki/Definitive_Media_Library
fuente