2012-04-12 27 views
2

Ich versuche einen Jenkins-Job für die Freigabe eines Java-Projekts mit dem Maven-Release-Plugin zu konfigurieren.
Ich möchte sicherstellen, dass die Major-Version, die ich verwende, um ein Release als inkompatibel mit einer früheren Major-Version zu markieren, sich ändert, wenn das aktuelle Release nicht mit dem vorherigen Release kompatibel ist.Jenkins: Automatische Versionsprüfung von Maven-Release mit Unit-Tests

Ein Beispiel:

Die letzte Veröffentlichung war Version 1.9.5 die Foo namens eine Klasse enthalten ist.
In der aktuellen Version wurde diese Klasse entfernt.
Der Benutzer gibt als aktuelle Release-Version 1.9.6 an und startet den Jenkins-Job. Der Release sollte dem Benutzer sagen

, dass die aktuelle Hauptversion nicht sein wird erwartet, da die API unvereinbar geworden ist.

Ich dachte an die Unit-Tests der vorherigen Version, um den Code der aktuellen Version zu testen. Wenn eine API inkompatibel ist, sollten die Unit-Tests der vorherigen Version während des Kompilierens oder Tests fehlschlagen (vorausgesetzt, es gibt einen Unit-Test für diesen Code).

Mein Ansatz würde erfordern, Tests in einem separaten Projekt zu behalten und zwei Versionen aus meinem VCS zu überprüfen.

Kennen Sie ein Jenkins-Plugin, das Ihnen dabei helfen könnte oder haben Sie eine andere Idee, wie Sie überprüfen können, ob die API zwischen zwei Hauptversionen inkompatibel ist?

Antwort

2

Da ich kein Verständnis für Ihre API habe, könnte ich Ihnen keine Vorschläge zum Testen der Kompatibilität Ihrer API vorschlagen.

Auf der Jenkins/Maven Front, würde ich vorschlagen, dass Sie die aktuelle Release-Build als nachgeschalteter Job Ihrer Tests' Job mithilfe der ein Post bauen Aktionen Option namens ‚Trigger parametrisierte bauen auf anderen Projekten‘

laufen Mit dieser Funktion können Sie den nachgelagerten Job abhängig vom Ergebnis dieses Jobs mit anderen Parametern auslösen. I.e. Wenn die gesamte Testsuite erfolgreich war, lösen Sie einen kleineren Release-Build aus und umgekehrt.

+0

Klingt gut. Ich werde es am Wochenende versuchen. –

1

Ich glaube nicht, dass es einen Sinn hat, Jenkins oder das Release-Plugin dafür zu verwenden - wie oft werden Sie eine größere Veröffentlichung machen?

Ihre Idee, die Komponententests in ein anderes Projekt zu trennen, ist eine gute Idee. Führen Sie einfach die Tests der vorherigen Version gegen die -SNAPSHOT-Version aus, die Sie veröffentlichen möchten. Wenn sie passieren, dann gut. Andernfalls stoßen Sie die Hauptversionsnummer an.

+0

Ich denke an die folgenden Schritte Release auszuführen: - Kasse eine neue Kopie des VCS - Bauen aktuellen Code & Run-Einheit-Tests - Kasse Einheit-Tests der vorherigen Version - Run Zurück Einheit-Tests - Tag VCS mit korrekter Version - Release starten & aktuelle Version auf nächste Snapshot-Version aktualisieren Wäre das nicht einfacher, wenn wir einen einzigen Job/Tool haben, dem wir nur die aktuelle und die nächste Release-Version geben? –

+0

Ja, es wäre einfacher, dies mit einem Werkzeug zu tun, denke ich. Vielleicht könnten Sie die http://mojo.codehaus.org/versions-maven-plugin/use-next-releases-mojo.html kombiniert mit den Unit-Tests der alten Version verwenden? – artbristol

Verwandte Themen