¿Qué es un repositorio de artefactos? Si es solo un lugar para almacenar archivos, ¿no puedo usar un sistema de control de fuente?
Responder
Durante desarrollo genera una buena cantidad de artefactos diferentes. Estos pueden incluir:
- El código fuente
- La aplicación compilada
- Un paquete implementable
- Documentación
y potencialmente otros también
Si bien podría usar un sistema de control de fuente para almacenarlos todos, generalmente es enormemente ineficiente, ya que los sistemas de control de fuente generalmente están diseñados para manejar texto basado archivos, y no archivos binarios. Es posible que pueda utilizarlos como un mecanismo de almacenamiento simple, si la mayoría de sus versiones están basadas en texto y no tiene que almacenar muchos datos binarios.
Sin embargo, los repositorios de artefactos están diseñados para almacenar todo tipo de archivos, incluidos los binarios. Esto incluye cualquier cosa, desde códigos fuente comprimidos, para generar resultados, hasta cosas como imágenes de Docker también. Además, generalmente no solo almacenan estos artefactos, sino que también ayudan a administrarlos usando varias funciones adicionales, por ejemplo:
- Soporte de control de versiones: almacena correctamente algunos metadatos, como cuándo se construyó cada artefacto, cuál es su versión número es, almacenar sus hashes, etc.
- Retención: asegúrese de mantener solo los artefactos importantes y elimine automáticamente los que son solo instantáneas / ya no son necesarios, etc. en función de varios criterios que puede configurar
- Control de acceso: configure quién puede publicar y quién puede descargar los diversos artefactos
- Promoción: capacidad para promover artefactos. Por ejemplo, puede tener artefactos de instantáneas con un período de retención corto en un servidor cerca de sus codificadores y un repositorio separado cerca de los servidores activos, donde solo aparecen los artefactos que se han considerado implementables. Esto también incluye soporte para varios canales de versión y movimiento de artefactos entre ellos (como promover una versión específica de beta a estable).
- Actuar como un repositorio nativo para los artefactos. Lo que significa que puede usarlo como repositorio principal para maven, rubygems, docker, etc. Esto también puede incluir el almacenamiento en caché de artefactos de los repositorios oficiales.
Comentarios
- Puede que valga la pena agregar la capacidad de ' channel ' sobre el soporte de versionado, teniendo la capacidad de tener algunas máquina dirigida a la última versión en el canal " desarrolla " y máquina de producción dirigida a una versión específica en el canal " estable ".
- @ Pierre.Vriens agregó algunos comentarios pequeños, pero tal vez también se puedan abordar en una pregunta separada
- merci, pero por si acaso, aquí es tu oportunidad de abordar mi comentario adicional …
- ¿Tiene sentido también realiza un seguimiento de los archivos de configuración o accesorios en este tipo de repositorios?
Respuesta
Hay administradores de repositorio y administradores de repositorio de paquetes universales (UPM).
Los UPM pueden almacenar todos sus artefactos de compilación para Jenkins, teamcity, etc. y, en general, también pueden actuar como administradores de repositorios para muchos tipos diferentes de artefactos binarios Maven, npm, NuGet y más.
Estas serían herramientas como Jfrog Artifactory , Inedo ProGet , y Sonatype Nexus .
Aquí hay una comparación bastante decente: https://binary-repositories-comparison.github.io/