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
:
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.
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.
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
erreichenmvn -P$PROFILE install
-Tasks ausführen) 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.
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
Tags und Links maven jenkins build artifactory