¿Qué es un repositorio de artefactos?

Respuestas:

32

Durante el desarrollo, genera una buena cantidad de artefactos diferentes. Estos pueden incluir:

  • El código fuente
  • La aplicación compilada
  • Un paquete desplegable
  • Documentación

y potencialmente otros también

Si bien podría usar un sistema de control de origen para almacenarlos, generalmente es enormemente ineficiente, ya que los sistemas de control de origen generalmente están diseñados para manejar archivos basados ​​en texto, y no archivos binarios. Es posible que pueda usarlos como un mecanismo de almacenamiento simple, si la mayoría de sus versiones están basadas en texto, y no tiene que almacenar una gran cantidad de 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, hasta resultados de construcción, hasta cosas como imágenes acoplables también. Además, generalmente no solo almacenan estos artefactos, sino que también ayudan a administrarlos utilizando varias funciones adicionales, por ejemplo:

  • Soporte de versiones: almacene correctamente algunos metadatos, como cuándo se construyó cada artefacto, cuál es su número de versión, almacene sus hashes, etc.
  • Retención: asegúrese de mantener solo los artefactos importantes y elimine automáticamente los que solo son instantáneas / ya no son necesarios, etc., según varios criterios que puede configurar
  • Control de acceso: configure quién puede publicar y quién puede descargar los diversos artefactos
  • Promoción: capacidad de 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 desplegables. Esto también incluye soporte para varios canales de versión y mover artefactos entre ellos (como promocionar una versión específica de beta a estable).
  • Actuar como un repositorio nativo para los artefactos. Lo que significa que puede usarlo como el repositorio principal de maven, rubygems, docker, etc. Esto también puede incluir el almacenamiento en caché de artefactos de los repositorios oficiales.
SztupY
fuente
Puede valer la pena agregar la capacidad de "canal" sobre el soporte de Versionning, teniendo la capacidad de tener alguna máquina dirigida a la última versión en el canal "desarrollo" y prod máquina dirigida a una versión específica en el canal "estable".
Tensibai
@ Pierre.Vriens agregó algunos pequeños comentarios, pero tal vez también se pueda abordar en una pregunta separada
SztupY
merci, pero por si acaso, aquí es su oportunidad para controlar mejor mi comentario adicional ...
Pierre.Vriens
¿Tiene sentido también realizar un seguimiento de los archivos de configuración o accesorios en este tipo de repositorios?
tutuca 01 de
7

Hay administradores de repositorios y administradores de repositorios 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 .

Una comparación bastante decente está aquí: https://binary-repositories-comparison.github.io/

Karl Harnagy
fuente