Was ist ein Artefakt-Repository?

Antworten:

32

Während der Entwicklung generieren Sie eine ganze Reihe verschiedener Artefakte. Dies können sein:

  • Der Quellcode
  • Die kompilierte Anwendung
  • Ein implementierbares Paket
  • Dokumentation

und möglicherweise auch andere

Während Sie ein Quellcodeverwaltungssystem verwenden könnten, um alle zu speichern, ist es normalerweise äußerst ineffizient, da Quellcodeverwaltungssysteme normalerweise für die Verarbeitung von textbasierten Dateien und nicht für Binärdateien ausgelegt sind. Sie können sie möglicherweise als einfachen Speichermechanismus verwenden, wenn die meisten Ihrer Releases textbasiert sind und Sie nicht viele Binärdaten speichern müssen.

Artefakt-Repositorys können jedoch alle Arten von Dateien speichern, auch binäre. Dies umfasst alles, von komprimierten Quellcodes über das Erstellen von Ergebnissen bis hin zu Docker-Bildern. Außerdem speichern sie in der Regel nicht nur diese Artefakte, sondern unterstützen sie auch bei der Verwaltung mit verschiedenen zusätzlichen Funktionen, beispielsweise:

  • Versionsunterstützung: Speichern Sie einige Metadaten ordnungsgemäß, z. B. als jedes Artefakt erstellt wurde, wie die Versionsnummer lautet, speichern Sie die Hashes usw.
  • Aufbewahrung: Stellen Sie sicher, dass Sie nur die wichtigen Artefakte aufbewahren und löschen Sie automatisch diejenigen, die nur Schnappschüsse sind / nicht mehr benötigt werden usw., basierend auf verschiedenen Kriterien, die Sie einrichten können
  • Zugriffskontrolle: Legen Sie fest, wer die verschiedenen Artefakte veröffentlichen und herunterladen kann
  • Promotion: Fähigkeit, Artefakte zu fördern. Beispielsweise können Snapshot-Artefakte mit einer kurzen Aufbewahrungsdauer auf einem Server in der Nähe Ihrer Codierer und einem separaten Repository in der Nähe der Live-Server vorhanden sein, auf denen nur als bereitstellbar geltende Artefakte angezeigt werden. Dies umfasst auch die Unterstützung verschiedener Versionskanäle und das Verschieben von Artefakten zwischen ihnen (z. B. das Heraufstufen einer bestimmten Version von Beta auf Stable).
  • Dient als systemeigenes Repository für die Artefakte. Das heißt, Sie können es als Haupt-Repository für Maven, Rubygems, Docker usw. verwenden. Dies kann auch das Zwischenspeichern von Artefakten aus den offiziellen Repositories einschließen.
SztupY
quelle
Möglicherweise lohnt es sich, die "Channel" -Funktion über die Versionning-Unterstützung hinaus zu erweitern, wenn ein Computer mit der neuesten Version im Channel "Entwickeln" und ein Produkt mit einer bestimmten Version im Channel "Stabil" als Ziel ausgewählt wird.
Tensibai
@ Pierre.Vriens fügte einige kleine Kommentare hinzu, aber vielleicht kann dies auch in einer separaten Frage behandelt werden
SztupY
merci, aber nur für den Fall, hier ist Ihre Chance, meinen zusätzlichen Kommentar weiter anzusprechen ...
Pierre.Vriens
Ist es sinnvoll, auch Konfigurationsdateien oder Fixtures in solchen Repositories zu speichern?
Tutuca
7

Es gibt Repository-Manager und Universal Package Repository Manager (UPM).

UPMs können alle Ihre Build-Artefakte für Jenkins, Teamcity usw. speichern und können im Allgemeinen auch als Repository-Manager für viele verschiedene Arten von binären Artefakten wie Maven, npm, NuGet und mehr fungieren.

Dies wären Tools wie Jfrog Artifactory , Inedo ProGet und Sonatype Nexus .

Ein recht ordentlicher Vergleich ist hier: https://binary-repositories-comparison.github.io/

Karl Harnagy
quelle