Die Frage zu " Was ist ein Artefakt-Repository? " Enthält eine Antwort mit einer interessanten Erklärung zum Repository-Teil. Und nachdem ich die gesamte Antwort gelesen habe, bin ich mir nicht sicher, was genau ein " Artefakt " im Kontext von DevOps bedeutet.
Irgendwelche Vorschläge?
Ps: Aus einer der Antworten geht hervor, dass ich mich (verwirrt?) Über Artefakte wundere ...
terminology
artifacts
Pierre.Vriens
quelle
quelle
Antworten:
Wikipedia hat eine sehr gute Antwort auf diese Frage. Artefakt , manchmal auch als abgeleitetes Objekt bezeichnet , ist ein Produkt eines Prozesses, der auf das Code-Repository angewendet wird . Ursprünglich hießen sie Build-Artefakte , aber da mehr Prozesse als Build angewendet wurden, um sie zu erstellen, wurde das erste Wort einfach weggelassen.
Der Hauptunterschied besteht darin, dass Artefakte mit demselben Prozess aus dem Code-Repository wiederhergestellt werden können, vorausgesetzt, Sie haben die Umgebung, in der der Prozess angewendet wurde, beibehalten. Da dieser Vorgang zeitaufwändig sein kann und die Umgebung nicht einwandfrei erhalten werden kann, um die Artefakte auf die gleiche Weise wiederherzustellen, haben wir begonnen, sie in Artefakt-Repositorys zu speichern .
Sie getrennt von Code Repository in einem Artefakt-Repository zu speichern, ist eine Konstruktionsentscheidung, die ein DevOps-Ingenieur treffen würde. Einige Unternehmen, insbesondere Perforce , schlagen vor , ihr Code-Repository auch als Artefakt-Repository zu verwenden. Es gibt unterschiedliche Anforderungen in Bezug auf Zugriff , Prüfung , Objektgröße , Objektkennzeichnung und Skalierbarkeit für jedes Repository. Je nach Situation ist es daher oft besser, zwei unterschiedliche Produkte zu verwenden. Zum Beispiel GitRepositorys werden in ihrer Gesamtheit auf jede Entwicklungsmaschine kopiert, und das Speichern von Artefakten im Code-Repository würde seine Größe über jeden Grund erhöhen, obwohl es in letzter Zeit Möglichkeiten gibt, dies zu verringern. Eine weitere Entscheidung ist, welche Artefakte gespeichert werden sollen. Einige Unternehmen speichern sogar Zwischenartefakte als einzelne Objektdateien, um die Neuerstellung zu beschleunigen, andere speichern einfach nur die endgültigen Binärdateien. Nicht alle Artefakte haben den gleichen Wert. Artefakte, die aus einem Release-Build resultieren, können andere Anforderungen haben als Artefakte, die aus einem Developer-Build resultieren.
Die häufigsten Artefakte sind Ergebnisse der folgenden Prozesse: Konfiguration , Vorverarbeitung , Kompilation , Linking , Automatisiertes Testen , Archivierung , Verpackung , Mediendateien Erstellung und Verarbeitung , Datendateierstellung , Dokumentation Parsing , Analyse - Code , QA , usw.
quelle
Es gibt zwei Verwendungszwecke des Wortes „Artefakt“, und einer macht den Quellcode zum Artefakt, während der zweite bewirkt, dass er kein Artefakt ist: Dies kann in der Tat ziemlich verwirrend sein!
"Artefakt" als konkretes Ding gegen ein ideales Ding - Diese Bedeutung ist die übliche Bedeutung des Wortes "ein Objekt, das von einem Menschen geschaffen wurde, typischerweise von kulturellem oder historischem Interesse" und ist keine Fachsprache. Hier ist ein Beispiel im technischen Kontext: Wenn Sie eine Software debuggen, erfahren Sie etwas über die Software. Es ist oft eine wertvolle Investition, dieses Lernen in ein Software-Artefakt wie einen Regressionstest zu verwandeln. Andernfalls wird dieses Lernen vergessen und die Mühe, es zu erwerben, wird verschwendet. In diesem Sinne wird der Quellcode als Artefakt betrachtet.
"Artefakt" als etwas, das durch ein Rezept hergestellt wird - Diese Bedeutung verwendet das beliebte Bild des Alchemisten, der ein esoterisches Rezept verwendet, um ein magisches Gerät herzustellen, das oft als Artefakt bezeichnet wird. Es ist eine Fachsprache, die verwendet wird, um zwischen dem Quellcode, der dem Rezept in der Metapher des Alchemisten entspricht, und allem, was von diesem Quellcode abgeleitet ist, der einem Artefakt in der Metapher des Alchemisten entspricht, zu unterscheiden. Ich habe zum Beispiel gerade die Artefaktproduktion für mein Programm plop-fizz automatisiert, jetzt können Quell-Tarballs, Signaturdateien, DEB- und RPM-Pakete in nur einem Befehl instanziiert werden! Diese Bedeutung erkennt den Quellcode nicht als Artefakt, da der Begriff bezeichnet, was aus diesem Quellcode erzeugt wird.
quelle
Ich nehme an, die Antwort kann von Ort zu Ort variieren. Wo ich im Moment arbeite, ist ein Artefakt alles, was von einer anderen Entität verbraucht wird, mit Ausnahme des Quellcodes, der für die Entwicklung verwendet wird - dies geht in die Quellcodeverwaltung.
Dies umfasst Binärdateien des Produkts oder anderer benötigter Produkte, Bibliotheken, Objektdateien, Testartefakte wie Mediendateien oder Testdaten.
Quellcode wird nicht als Artefakt betrachtet. Es sei denn, es entspricht der Definition von "konsumiert von" - in unserem Fall einschließlich Bibliotheken von Drittanbietern, zu Testzwecken verwendetem Skriptcode oder anderen Zwecken (jedoch nicht der Entwicklungsversion selbst).
quelle
Randnotiz auf der Kulturseite. Während wir in DevOps das Konzept des "Artefakt-Repositorys" als gegebene Situation betrachten, scheint es nicht so viel Verknüpfung mit dem Organisationsprozess zu geben.
Kulturproblem: Wenn eine Organisation ITIL verwendet, würden die zertifizierten Personen sagen, "wir benötigen eine definitive Medienbibliothek, ein solches Repository, um von uns erstellte Softwarekonfigurationselemente zu platzieren". Wer also auf gut strukturierte IT-Prozesse Wert legt, weiß nicht, welche (Nicht-Management-) Tools dies unterstützen und eingesetzt werden. Umgekehrt, wenn Sie eine Begründung für eine Nexus- oder Artifactory-Sprache benötigen, kann es je nach Organisation schwierig sein, dies zu erklären.
Weiterführende Literatur: https://en.wikipedia.org/wiki/Definitive_Media_Library
quelle