Ich habe einen Jenkins-Job konfiguriert, um ein Maven 3-Projekt zu erstellen und das Plugin "Maven release build" zu aktivieren. Außerdem wurde eine Post-Build-Aktion hinzugefügt, um die Artefakte in ein Nexus-Repository zu implementieren.Wie kann ich konfigurieren, dass Jenkins nicht im Maven-Repository bereitgestellt wird, wenn ich keinen Release-Build durchführe?
Ich möchte jedoch nicht, dass Artefakte bereitgestellt werden, es sei denn, der Benutzer hat den Build initiiert, indem er auf den Link "Perform Maven Release" statt auf die Schaltfläche "Build Now" geklickt hat. Wenn ich auf "Jetzt erstellen" klicke, möchte ich nur eine Momentaufnahme erstellen, die nirgends bereitgestellt wird.
Ich habe aus der Dokumentation verstanden, dass ich eine Umgebungsvariable namens IS_M2RELEASEBUILD verwenden könnte, um dieses Verhalten zu steuern. Diese Umgebungsvariable wird vom M2 Release Plugin auf "true" gesetzt, wenn der Build über die Verknüpfung "Perform Maven release" gestartet wurde. Aber die Post-Build-Aktion ignoriert dies vollständig.
Ich verwende Jenkins LTS 1.509.3 und Maven 3.0.5.
UPDATE: Bitte beachten Sie, dass ich nicht nach einer Problemumgehung mit dem Maven Release Plugin im POM suchen. Mein Ziel ist es, einen einzelnen Jenkins-Job zu erstellen, der als CI-Build (ohne Bereitstellen des Snapshots) durch Check-Ins ausgelöst wird, und denselben Job für die Erstellung eines Releases mit dem Jenkins M2 Release-Plugin verwenden zu können.
Wie wäre es, die Version in SNAPSHOT zu ändern und das Snapshot-Repository zu definieren? –
@AbhijithNagarajan Ich sehe keine Möglichkeit, 2 Post-Build-Aktionen (eine für Release und eine für Snapshot) zu haben und ich denke, ich hätte ein ähnliches Problem, einen Weg zur bedingten Ausführung des einen oder anderen zu finden. Außerdem möchte ich die Snapshot-Artefakte nicht wirklich bereitstellen. –
Warum verwendest du nicht maven, um deine Artefakte zu verteilen? –