Gleicher Arbeitsbereich für mehrere Jobs


74

Ich habe einen Job namens "Entwicklung" und ein anderes Projekt namens "Code-Analyse". Im Moment haben wir zwei verschiedene Jobs und verschiedene Arbeitsbereiche, aber den gleichen Code. Gibt es eine Möglichkeit, denselben Arbeitsbereich für mehrere Jobs zu verwenden?
Ich habe die in Jenkins verfügbaren Plugins überprüft, aber kein passendes gefunden.


3
Sie können einen benutzerdefinierten Arbeitsbereich stackoverflow.com/questions/20537137/…
KeepCalmAndCarryOn

4
Wenn Sie denselben Arbeitsbereich verwenden, sollten Sie sicherstellen, dass Sie keine Parallelität haben und dass Sie die Revisionen zwischen beiden ordnungsgemäß verfolgen können. Eine Parallelität kann auftreten, wenn Sie gerade Code analysieren, wenn der Entwicklungsjob mit dem Auschecken von Code beginnt. Es gibt Plugins (und Antworten), wie Sie die Probleme auf dieser Site verhindern können. (Vollständige Offenlegung: Wir haben einen gemeinsamen Arbeitsbereich ausprobiert und festgestellt, dass es für uns besser funktioniert, das Plugin für den
Klonarbeitsbereich

1
Um diese Parallelität auf einfache Weise zu erreichen, lösen Sie den Analysejob aus dem Entwicklungsjob aus und aktivieren Sie die Option Erweiterte Projektoption "Build erstellen, wenn Upstream-Projekt erstellt wird" für den Analysejob.
Paul Hicks

Antworten:


84

Angenommen, Ihr Jenkins-Arbeitsbereich "Entwicklung" ist /var/workspace/job1. GeneralKlicken Sie auf der Jobkonfigurationsseite "Codeanalyse" unter der Registerkarte auf Advanced...und wählen Sie die Option aus, Use custom workspaceund geben Sie denselben Arbeitsbereich /var/workspace/job1wie für Ihren "Entwicklungs" -Job an.


23
Dies ist ein anständiger Weg ... aber ich würde ihn einmal näher heranrücken und das wiki.jenkins-ci.org/display/JENKINS/inheritance-plugin verwenden, um $ {WORKSPACE} zu erben, damit es nicht fest codiert werden muss in allen Jobs - es wird sauberer zu warten sein.
Thekbb

5
@thekbb, das wäre eine Option, mit Ausnahme des Stapelüberlaufs, der in Verbindung mit dem JobConfigHistory-Plugin auftritt. Bis der Betreuer dieses Problem behebt, ist es für jeden nutzlos, der das JobConfigHistory-Plugin für Jobs benötigt, die keine Vererbung verwenden ...
Jon L.

Die Arbeitsbereichsverzeichnisse unterscheiden sich zwischen Master- (Job / <Jobname> / Arbeitsbereich) und Slave-Knoten (Arbeitsbereich / <Jobname>). Der Hardcode enthält also ein Skript sowie das Plugin.
Rickfoosusa


1
GeneralZu Ihrer Information, dass Sie in Jenkins Version 2.147 zum Festlegen eines benutzerdefinierten Arbeitsbereichs zur Registerkarte Ihres Projekts gehen, dann auf die Advanced...Schaltfläche klicken und das Kontrollkästchen "Benutzerdefinierten Arbeitsbereich verwenden" sehen.
Lyserty

6

Es gibt ein Jenkins-Plugin, mit dem Sie einen gemeinsam genutzten Arbeitsplatz erstellen und für jeden Job einrichten können, der die Dateien aus dem angegebenen Repository benötigt.

Anwendungsfall:

Ähnlich wie Sie es benötigen, erstellen Sie zuerst zwei Jobs aus demselben Git-Repository, gehen Sie dann zu "Jenkins verwalten" und erstellen Sie einen gemeinsamen Arbeitsbereich . Und zeigen Sie darauf, bei jedem Job, den Sie aus diesen Dateien lesen müssen.

Jenkins Plugin

https://wiki.jenkins-ci.org/display/JENKINS/Shared+workspace+plugin#


PS: Sie sollten sich mit "Bekannten Problemen" befassen, die einen Deal Breaker für Ihre Bedürfnisse darstellen könnten.

Manchmal sollten Sie bei einem neu kopierten Job, bei dem der URL-Parameter für gemeinsam genutzten Speicherplatz beim ersten "Speichern" nicht in der Konfiguration gespeichert wird, den Job zweimal speichern, um sicherzugehen.

^^ Dieser ist noch ungelöst , ich habe es versucht und passiert immer noch. Nach einigen Speichervorgängen (nur um sicherzugehen) läuft der Job perfekt.


6

Wenn Sie nicht finden konnten, Use custom workspacekönnen Sie es unter Ihrem Projekt findenconfigure>General>Advanced>Use custom workspace


0

Ich habe das Vererbungs-Plugin ausprobiert und whoa! Das Ding ist ein Vorschlaghammer, wenn ich nur einen winzigen Nagel habe.

Am Ende habe ich eine Post-Build-Aktion "Trigger parametrisierter Build für andere Projekte" mit "Build auf demselben Knoten" und einem "vordefinierten Parameter" hinzugefügt. Für den Downstream-Job muss ein gleichnamiger Parameter definiert sein (WORKSPACE_PARENT). Sie können ihn jedoch leer lassen. Anschließend definieren Sie den Downstream-Job mit einem benutzerdefinierten Arbeitsbereich (unter Allgemein> Erweitert).

Ich habe mich für eine Aktion nach dem Build entschieden, da der tatsächliche Erfolg des Build-Jobs (vorerst) unabhängig von den Ergebnissen des Downstream-Builds ist. Wenn Sie die Ergebnisse des Downstream-Jobs auf den übergeordneten Job übertragen möchten, müssen Sie ihn als Build-Task und nicht als Post-Build-Aktion hinzufügen.

Es funktioniert gut für das, was ich brauche.

Post-Build-Aufgabe der Eltern: Post-Build-Aufgabe der Eltern

Benutzerdefinierter Arbeitsbereich des Kindes: Benutzerdefinierter Arbeitsbereich des Kindes

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.