Enterprise Maven Master
Master 19 - CI CD und Release Master - Projektbeschreibungen
Projektbeschreibungen
| Modul | Aufgabe | Ablauf | Pattern | Tests |
|---|---|---|---|---|
pipeline-model | ReleaseRequest-Contract (Semver, Artefakt-Id, Attribute), PipelineStage-Schnittstelle, plus ReleaseLifecycle-Aggregat (Domain): erzwingt eine gültige Reihenfolge der Pipeline-Stufen bis APPROVED. | Version validieren -> Artefakt-Id validieren -> Stufen-Übergänge prüfen | Value Object, Command, Aggregate (Process Manager) | ReleaseRequestTest (3). ReleaseLifecycleTest (4): erreicht APPROVED bei vollständigem Erfolg, wechselt bei Fehlschlag zu ROLLED_BACK (bleibt dort auch bei späteren Erfolgen), lehnt Stufen außer der Reihe ab. |
maven-build-stage | Kompiliert/paketiert und lehnt bei Compile-Fehlern ab. | Eingang prüfen -> Compile-Fehler zählen -> Ergebnis melden | Command | MavenBuildStageTest (2): besteht ohne Fehler, schlägt bei Compile-Fehlern fehl. |
quality-gate-stage | Erzwingt eine Mindest-Testabdeckung von 80% vor der Freigabe. | Coverage lesen -> gegen Schwelle prüfen -> Ergebnis melden | Command | QualityGateStageTest (2): besteht bei ausreichender Abdeckung, schlägt bei zu niedriger Abdeckung fehl. |
container-build-stage | Baut das Image und verbietet den unveränderlichen latest-Tag. | Image-Tag lesen -> auf "latest" prüfen -> Ergebnis melden | Command | ContainerBuildStageTest (2): besteht mit gepinntem Tag, lehnt "latest" ab. |
sbom-license-stage | Erzeugt die SBOM und lehnt verbotene Lizenzen (GPL-3.0, AGPL-3.0) ab. | Lizenzen lesen -> gegen Sperrliste prüfen -> Ergebnis melden | Command | SbomLicenseStageTest (2): besteht mit zulässigen Lizenzen, lehnt verbotene Lizenz ab. |
release-notes-stage | Erzwingt ein nicht-leeres Changelog je Version. | Changelog-Einträge zählen -> auf >=1 prüfen -> Ergebnis melden | Command | ReleaseNotesStageTest (2): besteht mit mindestens einem Eintrag, schlägt bei leerem Changelog fehl. |
openshift-deploy-stage | Rollt nur in bekannte Namespaces (dev/staging/prod) aus. | Ziel-Namespace lesen -> gegen bekannte Namespaces prüfen -> Ergebnis melden | Command | OpenShiftDeployStageTest (2): besteht für bekannten Namespace, schlägt bei unbekanntem Namespace fehl. |
approval-stage | Erzwingt ein manuelles Vier-Augen-Prinzip vor dem Produktions-Deploy. | Genehmiger lesen -> auf Vorhandensein prüfen -> Ergebnis melden | Command | ApprovalStageTest (2): besteht mit hinterlegtem Genehmiger, schlägt ohne Genehmiger fehl. |
rollback-stage | Wertet alle vorherigen Stufenergebnisse aus und löst nur bei Fehlschlag einen Rollback aus; ReleaseOrchestrator (Application) führt alle Stufen aus und pflegt das ReleaseLifecycle-Aggregat. | Stufen ausführen -> Lifecycle fortschreiben -> Rollback auswerten -> Ergebnis melden | Compensating Action, Application Service | RollbackStageTest (2): meldet "nicht nötig" bei durchgängigem Erfolg, nennt die fehlgeschlagene Stufe. ReleaseOrchestratorTest (2): erreicht APPROVED bei Erfolg, wechselt zu ROLLED_BACK bei Fehlschlag. |
runnable-smoke | Verdrahtet alle sieben Stufen über den ReleaseOrchestrator zu einem End-to-End-Release-Lauf (mvn -pl runnable-smoke -am package). | Build -> Test Gate -> Image -> SBOM -> Release Notes -> Deploy -> Approval -> Rollback-Auswertung | Command, Pipeline, Result Object | Kein eigener JUnit-Test; verifiziert STATUS=OK und release-state: APPROVED zur Laufzeit und bricht mit Fehler ab, falls eine Stufe abweicht. |
Ausbaustufe 1 (minimal lauffähig): 19 JUnit-Tests über 9 vormals leere Submodule. Ausbaustufe 2 (fachlich ausgearbeitet): pipeline-model bekam das ReleaseLifecycle-Aggregat (Zustandsautomat DRAFTED -> ... -> APPROVED/ROLLED_BACK), rollback-stage bekam den ReleaseOrchestrator als Application Service — 6 weitere Tests, macht 28 Tests insgesamt für dieses Modul. Verifiziert mit mvn test (alle grün) und dem End-to-End-Smoke-Lauf mvn -pl runnable-smoke -am package (weiterhin STATUS=OK, jetzt mit sichtbarem release-state: APPROVED).