Was ist ein Artefakt (oder ein Artefakt)?

17

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 ...

Pierre.Vriens
quelle
2
Unsere Freunde von English SE haben eine Ansicht über "Artefakt" vs. "Artefakt" geschrieben: english.stackexchange.com/questions/37903/…
7ochem

Antworten:

19

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.

Jiri Klouda
quelle
Der Satz über die Git-Größe ist nicht ganz genau. Mit Git-Lfs können Sie dieses Problem beheben . (nur eine kleine Genauigkeit)
Tensibai
Interessant, das bestätigt mein Denken (Raten) noch mehr. 2 Dinge: Ihr Perforce-Link muss repariert werden und es muss eine zusätzliche Frage gestellt werden: Würden Sie zustimmen, dass "Verfolgen Ihrer Testdaten" (die Eingabe, die Sie verwendet haben, und die Ausgabe, die Sie erhalten haben) auch als solche Artefakte betrachtet werden könnten? Und übrigens, diese Antwort erinnert mich an "Verifizierungsstufen", die im Bereich "Software-Treuhandkonto" verwendet werden (sofern Sie damit vertraut sind). Ich frage mich, welche Software-Treuhand-Themen für DevOps in Betracht gezogen werden sollten ... Vielleicht möchte @Tensibai dies auch kommentieren?
Pierre.Vriens
1
@ Pierre.Vriens für Ihre Testdaten, das ist heutzutage schwierig, wenn Ihre Testdaten eine Datenbank sind, die nicht zu einer Artefaktidee passt. Ich habe keine Ahnung, wie es ist, ob die Fragen so konzentriert sind, dass sie für mich in Ordnung klingen.
Tensibai
@ Pierre.Vriens Ich meine, es gibt so viele Dinge, die zum Namen 'Testdaten' passen (von einfachen Zahlen bis zu Millionen Dateien über Beispiel-DB-Datensätze), dass es ohne Kontext zu umfangreich ist.
Tensibai
@ Pierre.Vriens (und entschuldige Jiri für die Benachrichtigungen) Ich glaube nicht, dass die Vertragsverhandlungen mit Ihrem Provider ein Thema sind, und was Sie beschreiben, ist nur eine rechtliche Verhandlung für das, was ich denke.
Tensibai
7

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.

Michael Le Barbier Grünewald
quelle
3

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).

Rsf
quelle
Hm, interessant, Sie bestätigen, was ich vermutet habe. Würden Sie zustimmen, dass es keine Rolle spielt, über welche Plattform oder welches Betriebssystem wir sprechen? Zum Beispiel kann man diese Terminologie auch für Großrechner "verwenden" ... Wenn ja, können Sie bitte auch etwas dazu in Ihre Antwort aufnehmen?
Pierre.Vriens
Sogar tatsächlicher Code aus der Versionskontrolle kann / sollte als Artefakt betrachtet werden, wenn er verbraucht wird. Beispielsweise vorlagenbasierte HTML-Seiten, die unverändert auf einer Website bereitgestellt werden sollen. Hierbei handelt es sich um Bereitstellungsartefakte, die möglicherweise explizit zusammen mit anderen erstellten Artefakten an einem temporären Speicherort für die eigentliche Bereitstellung kopiert werden müssen. Es ist jedoch möglicherweise nicht sinnvoll, sie in einem Artefakt-Repository zu speichern, da sie immer aus dem Quellcode-Repository abgerufen werden können.
Dan Cornilescu
@Pierre Ich bin mir nicht sicher, warum es in der Antwort enthalten sein sollte, wenn ich bestätige, dass es sich bei welchem ​​Betriebssystem um ein Artefakt handelt. Viele andere Dinge sind ebenfalls irrelevant.
Rsf
0

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

Peter
quelle
1
Hallo. Willkommen auf der Seite. Bitte fügen Sie der Antwort weitere Informationen hinzu. Im aktuellen Status ist es nur für Links
verfügbar
Wenn es bei DevOps auch um Kultur geht, halte ich eine Verbindung zu ITIL für wichtig, da sie manchmal die IT-Organisation auf einer höheren Organisationsebene regelt. Weitere Erklärungen hinzugefügt, um diese Symmetrie der Ignoranz zu verdeutlichen.
Peter
1
Ich denke nicht, dass es sich wirklich um die Frage handelt, was ein Artefakt ist, aber zumindest scheint es ein ehrlicher Versuch zu sein, es jetzt zu beantworten.
Tensibai
Ich stimme @Tensibai (jetzt) ​​zu und habe meinen vorherigen Kommentar gelöscht (nicht länger verdächtig). Und obwohl alles in dieser Antwort Sinn macht, verstehe ich immer noch nicht, wie diese "Randnotiz" -Antwort meine Frage beantwortet, die ich auch in meinem Fragentitel zusammengefasst habe, dh " Was ist ein Artefakt (oder Artefakt)? " )? " Ich begrüße neue Versuche, OK?
Pierre.Vriens