Enterprise Maven Master

Master 19 - CI CD und Release Master - Projektbeschreibungen

Projektbeschreibungen

ModulAufgabeAblaufPatternTests
pipeline-modelReleaseRequest-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üfenValue 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-stageKompiliert/paketiert und lehnt bei Compile-Fehlern ab.Eingang prüfen -> Compile-Fehler zählen -> Ergebnis meldenCommandMavenBuildStageTest (2): besteht ohne Fehler, schlägt bei Compile-Fehlern fehl.
quality-gate-stageErzwingt eine Mindest-Testabdeckung von 80% vor der Freigabe.Coverage lesen -> gegen Schwelle prüfen -> Ergebnis meldenCommandQualityGateStageTest (2): besteht bei ausreichender Abdeckung, schlägt bei zu niedriger Abdeckung fehl.
container-build-stageBaut das Image und verbietet den unveränderlichen latest-Tag.Image-Tag lesen -> auf "latest" prüfen -> Ergebnis meldenCommandContainerBuildStageTest (2): besteht mit gepinntem Tag, lehnt "latest" ab.
sbom-license-stageErzeugt die SBOM und lehnt verbotene Lizenzen (GPL-3.0, AGPL-3.0) ab.Lizenzen lesen -> gegen Sperrliste prüfen -> Ergebnis meldenCommandSbomLicenseStageTest (2): besteht mit zulässigen Lizenzen, lehnt verbotene Lizenz ab.
release-notes-stageErzwingt ein nicht-leeres Changelog je Version.Changelog-Einträge zählen -> auf >=1 prüfen -> Ergebnis meldenCommandReleaseNotesStageTest (2): besteht mit mindestens einem Eintrag, schlägt bei leerem Changelog fehl.
openshift-deploy-stageRollt nur in bekannte Namespaces (dev/staging/prod) aus.Ziel-Namespace lesen -> gegen bekannte Namespaces prüfen -> Ergebnis meldenCommandOpenShiftDeployStageTest (2): besteht für bekannten Namespace, schlägt bei unbekanntem Namespace fehl.
approval-stageErzwingt ein manuelles Vier-Augen-Prinzip vor dem Produktions-Deploy.Genehmiger lesen -> auf Vorhandensein prüfen -> Ergebnis meldenCommandApprovalStageTest (2): besteht mit hinterlegtem Genehmiger, schlägt ohne Genehmiger fehl.
rollback-stageWertet 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 meldenCompensating Action, Application ServiceRollbackStageTest (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-smokeVerdrahtet 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-AuswertungCommand, Pipeline, Result ObjectKein 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).

⌂ Cockpit