Könnte mir bitte jemand die Idee von Artefakten im Erstellungsprozess erklären ?
Ich habe das Arbeitsbereichsverzeichnis, in dem ich den Code zum Kompilieren und Ausführen meiner Ant-Skripte usw. auschecke. 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 sagen, 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. Wie kann ich Jenkins mitteilen, welche JAR-Datei ausgewählt werden soll?
EDIT: Okay, also habe ich versucht, so etwas zu machen:
Der Pfad ist in meinem Arbeitsbereich noch nicht vorhanden, da das Build-Skript ihn erstellen soll, und natürlich sind die Dateien .jar
und .properties
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 auch die Artefakte nach jedem Build (nicht die archivierten Artefakte, ich weiß, ich kann ihm sagen, dass er diese löschen soll)? Andernfalls wird die Festplatte ziemlich schnell verstopfen.
Antworten:
Ihr Verständnis ist richtig, ein Artefakt im Sinne von Jenkins ist das Ergebnis eines Builds - die beabsichtigte Ausgabe des Build-Prozesses.
Eine gemeinsame Konvention ist das Ergebnis eines Builds in ein setzen
build
,target
oderbin
Verzeichnis.Der Jenkins-Archivierer kann mit globs (
target/*.jar
) problemlos die richtige Datei abrufen, selbst wenn Sie pro Build einen eindeutigen Namen haben.quelle
sh 'mvn clean package'
Ein Artefakt kann ein beliebiges Ergebnis Ihres Erstellungsprozesses sein. Wichtig ist, dass es keine Rolle spielt, 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, 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, während des Builds in einer Datei mit einem konstanten Namen komprimiert.
quelle
Nein, Hudson / Jenkins löscht den Arbeitsbereich nach einem Build nicht von selbst. Möglicherweise haben Sie Aktionen in Ihrem Erstellungsprozess, die Build-Artefakte löschen, überschreiben oder verschieben, von wo Sie sie verlassen haben. In der Jobkonfiguration in den erweiterten Projektoptionen (die erweitert werden müssen) gibt es eine Option namens "Arbeitsbereich vor dem Erstellen bereinigen", mit der der Arbeitsbereich zu Beginn eines neuen Builds gelöscht wird.
quelle
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. Es werden zwei weitere Optionen angezeigt, die sich darauf beziehen, Build-Artefakte für den Job basierend auf der Anzahl der Tage oder Builds beizubehalten.
Die Einstellungen, die für mich funktionieren, sind 1 für "Maximale Anzahl von Builds, die mit Artefakten aufbewahrt werden sollen" und anschließend eine Aktion nach dem Erstellen, 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.
Verwerfen Sie alte Build-Optionen
quelle