Erstellen mehrerer Maven-Profile für einen einzelnen Jenkins-Job

8

Ich versuche, mehrere Maven-Profile in einem einzelnen Jenkins-Job zu erstellen. Jedes Profil ändert etwas Code und erstellt dann ein Jar, indem es mvn -Pdev install und dann mvn -Pprod install in der Kommandozeile ausführt (Laut Maven sollte mvn -Pdev,prod install funktionieren, funktioniert aber nicht für mich). Hier sind die zwei Profile in meinem Projekt pom.xml :

%Vor%

Wie würde ich Jenkins einrichten, um automatisch beide Profile für einen einzelnen Jenkins-Job zu erstellen, wenn der Job für einen Build aufgerufen wird? Und stelle diese beiden Gläser in das Artefakt? Ich habe sehr wenig Jenkins Wissen und es gibt nicht viele Informationen darüber im Internet.

    
user2639215 09.08.2013, 17:58
quelle

4 Antworten

13

Sie könnten einen Jenkins-Matrix-Job erstellen. Ein Matrixjob ermöglicht die Ausführung desselben Jobs mit sich ändernden Einstellungen (in Ihrem Fall eine Zeichenfolge).

Jede sich ändernde Einstellung wird als Achse bezeichnet. In Ihrem Fall würden Sie eine String-Achse erstellen, die die zwei Werte enthält: dev und prod.

Auf diese Weise würde Ihr Job zweimal ausgeführt, mit beiden Werten.

Allerdings: Ihre Verwendung von Profilen ist gefährlich. Da das Profil, das zum Ausführen des Builds verwendet wird, nicht in Ihrem Artefakt enthalten ist, brechen Sie die "One-Source-Revision sollte immer zum genau gleichen Zielartefakt" -Vertrag von Maven führen (siehe: Ссылка für eine detailliertere Erklärung)

Sie können entweder zwei verschiedene Artefakte mit classifier (-dev und -prod) erstellen oder noch besser: Erstellen Sie zwei separate Module Ihres Builds, von denen jeder nur eines Ihrer Zielartefakte erzeugt.

    
blackbuild 02.03.2014 13:11
quelle
9

Wenn Sie in Maven mvn -Pdev,prod verwenden, aktivieren Sie beide Profile gleichzeitig in einem Befehl.

Es sieht so aus, als ob Sie zwei verschiedene Befehle ausführen möchten, d. h. etwas, was Sie in der Befehlszeile erreichen würden, indem Sie zwei Builds ausführen:

%Vor%

In jenkins können Sie dies entweder mit

erreichen
  • ein kostenloser Style-Projekt-Job (mit 2 Shell-Buildern, die die mvn -P$PROFILE install -Tasks ausführen)
  • 2 maven type jobs (die Sie nacheinander mit "build nach anderen Projekten erstellen" verketten können).
coffeebreaks 10.08.2013 06:10
quelle
1

Zusätzlich zu Matrix-Jobs und mehreren Maven-Aufrufen in einem Free-Style-Job gibt es einen anderen Weg: Run top-level Maven targets als Pre-Build-Schritt und den anderen Befehl über das maven jenkins-Plugin ausführen.

Stellen Sie sicher, dass der Pre-Build-Schritt denselben Maven-Repo verwendet wie der andere Befehl, indem Sie -Dmaven.repo.local=/${whatever-it-is}/${EXECUTOR_NUMBER} bereitstellen.

Weitere Informationen zu Matrixjob usw. finden Sie in den anderen Antworten.

    
phani 05.05.2017 21:55
quelle
0

Sie können dies tun, indem Sie für jede Ausführung verschiedene Ausführungs-IDs festlegen und dann den Befehl

auslösen

mvn -Pdev,prod clean package install

    
Kailas Vilasrao Kore 05.08.2015 00:51
quelle

Tags und Links