Jenkins mehrere Artefakte für den gleichen Build

72

Gibt es eine Möglichkeit, mehrere Artefakte aus demselben Build zu speichern / zu archivieren?

Jenkins erlaubt nur einen einzigen Post-Build-Schritt zum Archivieren der Artefakte und deaktiviert die Option, nachdem sie einmal verwendet wurde.

Vielleicht ArtifactsArchivererlaubt das mehrere Muster?

Thunderbird
quelle
1
Zu Ihrer Information Dies ist keine Einschränkung bei Jenkinsfile- / Pipeline-Builds.
simon.watts

Antworten:

98

Sie können ein Muster im Ameisenstil verwenden , z. B. target/*.jarum mehrere Artefakte zu archivieren.

Und es ist möglich, eine durch Kommas getrennte Liste von Mustern zu verwenden, wenn Ihre Dateien nicht mit einem Muster abgeglichen werden können, z target/*.jar, target/*.war.

Das ? Die Schaltfläche neben dem Eingabefeld zeigt diese Informationen an.

daspilker
quelle
Entschuldigung, ich denke, meine Frage ist nicht sehr klar. Ich möchte zwei verschiedene Build-Artefakte haben, nicht nur eines. Ich weiß, dass ich mehrere Dateien mit Platzhaltern archivieren kann. Was ich möchte, ist, zwei verschiedene Sätze von Build-Artefakten zu haben.
Thunderbird
1
Wenn ich mich nicht irre, willst du Artefakte aus 2 verschiedenen Builds, oder? Wenn Sie den Namen des zweiten Jobs kennen und sicherstellen, dass beide auf demselben Knoten ausgeführt werden, können Sie den Pfad zum zweiten Job angeben, um die Artefakte wie * / .jar (vom selben Job) / home / jenkins / workspace / <JOB_NAME zu archivieren > / ** / *. jar (Für verschiedene Build-Jobs).
Vishal Sahasrabuddhe
3
Verwenden Sie einfach das ,in der Antwort angegebene Komma , um verschiedene Dateigruppen zu trennen.
Larry Cai
46
Nur bemerken, dass die? Die Schaltfläche erwähnt keine durch Kommas getrennte Liste. Danke, dass
du
3
So archivieren Sie einen Ordner - archiveArtifacts '<folder_name>/**
Mohnish
36

Sie können die Pfade wie folgt durch Kommas trennen:

XXX.UnitTests\bin\Release\**.* , XXX.WriteAPI.Service/bin/Release/**.*

Dann erhalten Sie zwei separate Artefakte.

Weitere Informationen zur Ant Pattern- Syntax finden Sie unter http://ant.apache.org/manual/Types/fileset.html .

David Lilljegren
quelle
David, gibt es überhaupt mehrere JARs für verschiedene Pfade innerhalb eines Repos? Wie ich es hier beschrieben habe: stackoverflow.com/questions/44185868/…
Kevin Ghaboosi
Ist der Raum nach dem ersten Muster tatsächlich notwendig / relevant?
mmigdol
@mmigdol Wahrscheinlich können Sie den Raum entfernen. Beachten Sie, dass Sie gemäß der Ant-Dokumentation anstelle von Komma Leerzeichen verwenden können. Ich denke also, dass sowohl Artefakt1, Artefakt2 als auch Artefakt1 Artefakt2 eine gültige Syntax sind
David Lilljegren
10

Wenn Sie zwei verschiedene Dateitypen wie Zip-Dateien und HTML-Dateien speichern möchten, können Sie diese verwenden

*.html,*.zip

Es wird Ihnen helfen, alle Zip-Dateien und HTML-Dateien in diesem Verzeichnis zu archivieren.

Jagadeesh Pulamarasetti
quelle
5

Nein, Jenkins bietet nicht nur ein Artefakt zum Speichern. Sie können ein Wildcard-Muster verwenden, um eine beliebige Anzahl von Artefakten zu verwenden, z. B. All Jars - ** / *. Jar All War - ** / *. War und so weiter.

** / bedeutet ein beliebiges Verzeichnis.

Vishal Sahasrabuddhe
quelle
Das OP hat das nie gesagt, er oder sie sagte, Sie können nur einen Schritt "Archivieren der Artefakte" hinzufügen.
Chris Withers
0

Alle Antworten hier zeigen, wie mehrere Dateimuster zu einem Artefakt kombiniert werden können, was vom OP nicht verlangt wurde.

Ein Beispiel für die Anforderung ist die Erstellung einer Single Page Web App, in der umgebungsspezifische Einstellungen in JavaScript für QS, Staging und Produktion kompiliert wurden.

Da Sie denselben Build in mehreren Umgebungen bereitstellen möchten, benötigen Sie drei Builds mit jeweils eigenen Umgebungseinstellungen. Wenn Sie das Archiv bereitstellen, möchten Sie nicht den Inhalt aller drei in jeder Umgebung bereitstellen und nur den Inhalt für diese eine Umgebung extrahieren, da das Kopieren von 66% mehr teuer ist als jedes Mal erforderlich und fehleranfällig sein kann.

Es ist daher sinnvoll, zwei oder mehr Builds in ihre eigenen Artefakte zu generieren und je nach Zielumgebung eines dieser Artefakte bereitzustellen.

Jenkins sollte mehrere Artefakte unterstützen und nicht nur 1 Artefakt größer machen.

Antony Booth
quelle
Nein, das OP sagte: "Vielleicht erlaubt der ArtifactsArchiver mehrere Muster?" so klar will er mehrere Muster in demselben Build (die die anderen Antworten abgedeckt haben). Es ist auch ein Fehler zu glauben, dass ein "Artefakt" irgendwie einzigartig ist. Selbst wenn Sie sich etwas ausgedacht haben, können Sie Artefakte "Test", "Integration" und "Produktion" im selben Build erstellen und alle gleichzeitig mit einem einzigen Selektor archivieren - unter separaten Namen oder Verzeichnissen.
Steven der leicht amüsierte