CI/CD Affected Deployments
In einem Monorepo mit 20+ Projekten ist „alles deployen” keine Option. Affected-basierte Deployments deployen nur das, was sich geändert hat — und was davon abhängt.
Das Prinzip
Abschnitt betitelt „Das Prinzip“npx nx show projects --affected --withTarget=docker:buildNx berechnet, welche Projekte seit dem letzten Deployment geändert wurden (direkt oder durch Abhängigkeiten). Nur diese werden gebaut und deployed.
Die deployables.matrix.json
Abschnitt betitelt „Die deployables.matrix.json“Jedes deploybare Projekt hat einen Eintrag in der Matrix:
{ "project": "frontend-architekt-docs", "stack": "frontend-architekt", "service": "frontend-architekt-docs", "compose": "devops/frontend-architekt/compose/docker-compose.remote.yml", "composeProjectName": "frontend-architekt"}Das Deploy-Script liest die Matrix, findet betroffene Services, gruppiert nach Stack und deployed in einem docker compose up -d.
Warum das funktioniert
Abschnitt betitelt „Warum das funktioniert“- Schneller: Nur geänderte Images werden gebaut (~4 parallel)
- Sicherer: Unveränderte Dienste werden nicht neu gestartet
- Nachvollziehbar: Matrix + SHA = klares Audit-Trail
- Affected-aware: Shared Libraries triggern alle abhängigen Projekte
Preview-Deployments
Abschnitt betitelt „Preview-Deployments“Für Feature-Branches: manuelle GitLab-CI-Trigger, die das SCS gegen eine Preview-URL deployen. Auto-Stop nach 2 Tagen.