Was ist ein Artefakt?


53

Es gibt einige Fragen und Antworten , die " künstlich " erwähnen .

Es würde mich nicht wundern, wenn es irgendwie mit .

Meine Fragen :

  • Was ist eigentlich ein "Artefakt" (im Kontext von DevOps)?
  • Warum werden Artefakte verwendet?

Einige interessante Antworten auf eine meiner Meinung nach eher grundlegende Frage. Komischerweise erinnern mich alle an ein ähnliches Konzept in guten alten Mainframe-Umgebungen (wo meine DevOps-Wurzeln liegen ... und wo so viele DevOps-Konzepte ihren Ursprung zu haben scheinen).
Pierre.Vriens

Antworten:


66

Artifactory ist ein Produkt von JFrog, das als Manager für das binäre Repository dient . Das heißt, man wird sehr oft ein "Artefakt" als Synonym für das allgemeinere binäre Repository verwenden, ähnlich wie viele Leute Frigidaire oder Kühlschrank verwenden, um den Kühlschrank zu bezeichnen, unabhängig davon, ob es sich um eine Marke von Frigidaire handelt oder nicht.

Das Binär-Repository ist eine natürliche Erweiterung des Quellcode-Repositorys, indem es das Ergebnis Ihres Erstellungsprozesses speichert, der häufig als Artefakte bezeichnet wird. Meistens wird das Binär-Repository nicht direkt verwendet, sondern über einen Paket-Manager, der mit der ausgewählten Technologie geliefert wird.

In den meisten Fällen werden hier einzelne Anwendungskomponenten gespeichert, die später zu einem vollständigen Produkt zusammengesetzt werden können. Auf diese Weise kann ein Build in kleinere Blöcke aufgeteilt werden, wodurch Ressourcen effizienter genutzt, die Erstellungszeiten verkürzt und die Verfolgung von Binär-Debug-Datenbanken usw. verbessert werden.

Hier sind einige der beliebtesten Paketmanager, die mit einem Binär-Repository verwaltet werden können:

  • Java: Glas, Ohr, Krieg usw. hat Maven und das offizielle MavenCentral . Es gibt viele andere Paketmanager, die ebenfalls das Maven-Binary-Repository-Format verwenden ( Ivy , Gradle usw.).
  • .Net: Nuget für .NET-Komponenten (DLL und EXE), kann aber auch als Verteilungsmechanismus unter Windows-Systemen wie Chocolatey verwendet werden . Neuere Versionen von Powershell können dies auch nutzen, um Powershell-Module zu verteilen, obwohl die Powershell-Galerie eine lokale Distribution mit einem binären Repository und einem Repository im Nuget-Format enthalten kann. Überprüfen Sie auch OneGet, ob die Windows-Verteilungsverwaltung für Sie von Interesse ist.
  • In JavaScript: Wir haben npm, welches eines der populärsten ist, benötigen nodejs .
  • In Python: Es gibt pip und den offiziellen Paketindex pypi , mit dem man auch eine lokale Instanz über ein binäres Repository erstellen kann, das das Format unterstützt.

Diese Liste ist alles andere als vollständig, sie gibt nur einen Überblick darüber, was da draußen ist.

Das Binär-Repository kann es ermöglichen, alle diese Dateien unter einem Dach zu hosten, was die Verwaltung für Teams erheblich vereinfacht. Beachten Sie, dass Sie kein sehr großes Team benötigen, um von der Verwaltung von Binärpaketen zu profitieren. Die anfängliche Investition ist nicht sehr groß und die Vorteile sind sofort zu spüren. Gerade jetzt, wo immer mehr Plattformen, Frameworks und Sprachen dieses Abhängigkeitsmanagement direkt in sie integrieren. Der größte Vorteil, den ich gefunden habe, war jedoch, eine Umgebung zu schaffen, die Ihre Programmierer als natürlich und komfortabel empfinden, sodass sie unverzichtbar ist. Es hilft Ihnen als Entwickler, eine solide Werkzeugkette zu erstellen, und es hilft Ihnen, das Gesamterlebnis auf natürliche Weise in den Stapel Ihrer Wahl zu integrieren.

Wie ich bereits sagte, gibt es viele Produkte , die als Manager von Binärpaketen dienen können. Einige sind generischer als andere, was die Zielnutzung anbelangt, und variieren auch in Bezug auf Zugänglichkeit und Preise erheblich.

Meine persönliche Meinung ist, dass binäre Repositorys genauso wichtig für ein gut gestaltetes Devop-Setup sind wie das Quellcode-Repository oder die kontinuierliche Integration.


Merci für diese interessante Antwort (auch). Aus irgendeinem Grund denke ich bei alledem wie folgt: "hm, das ist also so, wie wir es in guten alten Mainframe-Umgebungen normalerweise nennen: Ladebibliotheken, die ausführbare Dateien enthalten (die zum Ausführen Ihrer CICS / IMS / IDMS-Regionen verwendet werden) ..." .
Pierre.Vriens

1
Eine wichtige Sache, die hinzugefügt werden muss, ist der Aufstieg von öffentlichen Repositories wie Maven Central usw. modulecounts.com - diese sind oft DIE Bezugsquelle für Softwareprojekte, die immer mehr zum Problem der Montage dieser Komponenten werden Logik.
Peter

1
Ich habe noch nie von modulecounts.com gehört, aber die Seite ist jetzt nicht erreichbar. Ich werde es später überprüfen.
Newtopian

1
Interessante Analogie von Kühlschrank zu Kühlschrank :)
Ravi Tiwari

6

Der Unterschied zwischen dem Quellcode-Repository und dem Binär-Repository bestand zunächst darin, wie folgt zu denken: * Github oder Bitbucket sind nützlich, um den gesamten 'Code' zu verwalten bis ich mit diesen Begriffen zufrieden war!

Die Bedeutung von Artifactory kann auch im Zusammenhang mit der DevOps-Philosophie "Einmal erstellen, immer bereitstellen" verstanden werden. In Continuous Integration ist es ein langer Weg, Ihre Binärdatei einmal zu erstellen, in Artifactory zu platzieren und dann von dort aufzurufen, um sie in allen verschiedenen Umgebungen bereitzustellen. Auf diese Weise sind wir sicher, dass der Code, der in Dev funktioniert, derjenige ist, der an Prod gesendet wurde und dort funktionieren wird.


interessante Erklärung, merci!
Pierre.Vriens

5

Artifactory ist ein Binary Repository Manager- Produkt von Jfrog .

Sie haben Recht - als Binär-Repository-Manager wird er normalerweise zum Verwalten der Speicherung von verwendet, die im Softwareentwicklungsprozess generiert und verwendet werden.

Von der Hauptwebseite von Artifactory :

Als erster und einziger universeller Artifact Repository Manager auf dem Markt unterstützt JFrog Artifactory Softwarepakete, die mit einer beliebigen Sprache oder Technologie erstellt wurden.

...

... Artifactory bietet eine durchgängige, automatisierte und kugelsichere Lösung zur Verfolgung von Artefakten von der Entwicklung bis zur Produktion.

Die von Ihnen genannten Verwendungszwecke lassen vermuten, dass sie für eine generische Marke in DevOps populär genug sind .


1
Merci Dan, Sie bestätigt irgendwie , dass ein Artifactory wie eine Kombination aus den Wörtern Artifac ts mit Reposi Tory . Die zusätzliche Frage, über die ich mich wundere, lautet: Was ist mit Artefakten, die in der Produktion verwendet werden, aber keine Binärdateien sind, wie PHP-Code, CSS-Dateien, Bash-Skripte usw.?
Pierre.Vriens

1
Für Anwendungscode haben sie Quellcode-Versionierungssysteme wie cvs, svn, git, mercurial. Und für Konfigurationscode, Konfigurationsmanagement und Verteilungssysteme wie Marionette, Koch, ansible, Salz.
Peter

@ Pierre.Vriens Früher habe ich nicht so darüber nachgedacht, irgendwie kam mir immer zuerst "Fabrik" in den Sinn :) Aber jetzt sehe ich es total. Vielen Dank!
Dan Cornilescu

@ J.Doe merci für diesen Zusatz, und nur um Ihren Kommentar weiter zu erweitern ... auf Großrechnern haben sie Tools wie "ChangeMan ZMF", "Endevor SCM" usw. Diese Tools werden für alle von Ihnen erwähnten Funktionen verwendet (Versionierung, Verteilung usw., aber auch für den Workflow, die Sicherheit usw. im Zusammenhang mit all dem).
Pierre.Vriens

Also, wenn wir nur msinframes neu erfinden, was könnte daran falsch sein ?!
Peter

4

Ich denke, Dinge zu komplizieren ist das, wofür heutzutage jeder geschätzt wird. Ich werde versuchen, diese Frage kurz zu beantworten.

Source Repository wird zum Speichern von Code und seiner Versionen verwendet, während Artifactory zum Speichern der ausführbaren Programme verwendet wird, die Ausgaben dieses Codes sind [Binärdateien - DLL-, JAR-, WAR-, EAR-, MSI-, EXE-Dateien usw.].

Der Grund, warum Sie sie separat in einem Repo ablegen möchten, das sich von Ihrem Code unterscheidet, könnte vielfältig sein - direkt vom sicheren Zugriff über das Hacken von Bedrohungen und das Einchecken bösartiger Codes bis hin zu einer separaten Möglichkeit für die Kunden, die nur das benötigen Binärdateien.

Die Technologie von SCM hätte sich darauf auswirken können, zwei Arten von Benutzern zu erstellen (eine mit Entwicklerrechten, die auf den Quellcode zugreifen können, und eine andere als Client, der nur auf Binärdateien zugreifen kann). Aber diesen Weg hat es nicht genommen! Jetzt haben wir also Artefakteure.


2

Ein Artefakt

Ist etwas, das aus einem bestimmten Prozess hergestellt / erzeugt / hergestellt wird

Jar aus einem Java-Projekt Build.

Frage aus deinem Kopf

Auto aus einer Fabrik

Neues Lied

Ein Repository

Ist ein Behälter, in dem die Dinge bestehen bleiben

Github für ein Java-Projekt.

StackExchange für Ihre entmutigenden Fragen

Theoretisch ein Artefakt - ory wäre ein Repository von Artefakt sein , wo sie beibehalten werden und während ihres gesamten Lebenszyklus verwaltet.

Im Kontext von DevOps ist Artifactory ein Produkt, das binäre Artefakte verwaltet. Es speichert und verwaltet verschiedene Typen (Jar-, Python- und npm-Pakete usw.), die Sie aus Ihren Builds erstellen und zum Zeitpunkt der Kompilierung oder Bereitstellung wiederverwenden.


interessante Erklärung, merci!
Pierre.Vriens

Ca ich fait plaisir!
Gumol
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.