it-swarm.com.de

Archivieren Sie die Artefakte in Jenkins

Könnte mir bitte jemand die Idee von Artefakten im Build-Prozess erklären?

Ich habe das Arbeitsbereichsverzeichnis, in dem ich den Code auschecke, um meine Ant-Skripte usw. zu kompilieren und auszuführen. Am Ende erhalte ich in meinem Fall eine JAR-Datei, die zur Installation bereit ist. Wird das als Artefakt angesehen?

Wo soll ich meinem Build-Skript mitteilen, dass es die JAR-Datei ablegen soll? Im Arbeitsbereichsverzeichnis? Meine JAR-Datei erhält einen eindeutigen Dateinamen, abhängig von Variablen wie BUILD_ID Und wie kann ich Jenkins sagen, welche JAR-Datei er auswählen soll?

EDIT: Okay, also habe ich versucht, so etwas zu tun:

enter image description here

Der Pfad existiert noch nicht in meinem Arbeitsbereich, da das Build-Skript ihn erstellen soll, und natürlich das .jar und .properties Dateien sind nicht vorhanden, da sie noch nicht generiert wurden. Warum gibt es mir dann einen Fehler? Scheint, als würde mir etwas fehlen.

Löscht Jenkins die Artefakte auch nach jedem Build (nicht die archivierten Artefakte, ich weiß, dass ich sagen kann, dass diese gelöscht werden sollen)? Andernfalls wird die Festplatte ziemlich schnell verstopft.

123
Michael

Ihr Verständnis ist richtig, ein Artefakt im Sinne von Jenkins ist das Ergebnis eines Builds - der beabsichtigten Ausgabe des Build-Prozesses.

Eine übliche Konvention ist, das Ergebnis eines Builds in ein build-, target- oder bin -Verzeichnis zu stellen.

Der Jenkins-Archivierer kann Globs (target/*.jar) um einfach die richtige Datei zu finden, auch wenn Sie einen eindeutigen Namen pro Build haben.

64
Anders Lindahl

Ein Artefakt kann ein beliebiges Ergebnis Ihres Erstellungsprozesses sein. Wichtig ist, dass es egal ist, auf welchem ​​Client es erstellt wurde, es wird vom Arbeitsbereich zurück zum Master (Server) übertragen und dort mit einem Link zum Build gespeichert. Der Vorteil ist, dass es auf diese Weise versioniert ist, dass Sie nur ein Backup auf Ihrem Master einrichten müssen und dass alle Artefakte über die Weboberfläche zugänglich sind, auch wenn alle Build-Clients offline sind.

Es ist möglich, einen regulären Ausdruck als Artefaktnamen zu definieren. In meinem Fall habe ich alle Dateien, die ich speichern wollte, in eine Datei mit einem konstanten Namen gepackt.

11

Löscht Jenkins die Artefakte auch nach jedem Build? (nicht die archivierten Artefakte, ich weiß, ich kann es sagen, diese zu löschen)

Nein, Hudson/Jenkins räumt den Arbeitsbereich nach einem Build nicht von sich aus auf. Möglicherweise befinden sich Aktionen in Ihrem Erstellungsprozess, mit denen Erstellungsartefakte gelöscht, überschrieben oder an die Stelle verschoben werden, an der Sie sie belassen haben. In der Auftragskonfiguration gibt es in den erweiterten Projektoptionen (die erweitert werden müssen) die Option "Arbeitsbereich vor dem Erstellen bereinigen", die den Arbeitsbereich zu Beginn eines neuen Builds löscht.

7
Codex24

In Jenkins 2.60.3 gibt es eine Möglichkeit, Build-Artefakte (nicht die archivierten Artefakte) zu löschen, um Festplattenspeicher auf dem Build-Computer zu sparen. Aktivieren Sie im Abschnitt "Allgemein" die Option "Alte Builds verwerfen" mit der Strategie "Protokollrotation" und gehen Sie dann zu den erweiterten Optionen. Zwei weitere Optionen werden angezeigt, um Build-Artefakte für den Job basierend auf der Anzahl der Tage oder Builds beizubehalten.

Die Einstellungen, die für mich funktionieren, sind die Eingabe von 1 für "Max. Anzahl von Builds, um die Artefakte beizubehalten" und anschließend eine Aktion nach dem Build, um die Artefakte zu archivieren. Auf diese Weise werden alle Artefakte aus allen Builds archiviert, alle Informationen aus Builds werden gespeichert, aber nur der letzte Build behält seine eigenen Artefakte.

Alte Build-Optionen verwerfen

1
Matt