Status: current
Version: 1.0.0
Datum: 2026-09-06
Grundlage: aktuelle Repository-Gates, TESTING_STANDARDS.md und INSTALL_SERVER.md.
Dieses Runbook definiert das verbindliche Release-Gate für UnoSim. Es stellt sicher, dass jedes Release reproduzierbar, sicher und qualitätsgesichert ausgeliefert wird.
- Pflichtgates: Müssen vor jedem Release erfolgreich durchlaufen werden.
- Opt-in-Gates: Heavy-/Load-/Skalierungstests, die bei Bedarf oder vor Major-Releases ausgeführt werden.
- Security-Audit: Verbindlicher Bestandteil jedes Release-Prozesses.
| Variable | Zweck | Beispiel |
|---|---|---|
SONAR_TOKEN |
SonarQube-Analyse | sqp_... |
DOCKER_HOST |
Docker-Host (optional) | unix:///Users/to/.docker/run/docker.sock |
DOCKER_SANDBOX_IMAGE |
Sandbox-Image | unosim-sandbox:latest |
RUN_HEAVY_TESTS |
Heavy-Tests aktivieren | 1 oder true |
REQUIRE_RELEASE_GATE |
Release-Gates einschließlich Docker/E2E/Sonar erzwingen | 1 |
- Node.js:
24.20.0(oder gemäß.nvmrc) - Docker: für einen vollständigen Release-Gate-Lauf erforderlich
- SonarQube: lokal (
http://localhost:9000) oder remote
npm run checkErwartung: Keine TypeScript-Fehler.
Abbruch bei: Typecheck-Fehlern.
npm run test:unitErwartung: Alle Tests bestanden, keine Flakiness.
Abbruch bei: Fehlgeschlagenen Tests oder Timeout-Überschreitungen.
npm run test:integrationErwartung: Toolchain-Integration funktioniert.
Abbruch bei: Fehlgeschlagenen Integrationstests.
npm run test:dockerErwartung: Sandbox-Isolation, Cleanup, Security-Contract. Im normalen Entwicklerlauf kann dieser Gate bei fehlendem Docker übersprungen werden; im Release-Gate ist Docker zwingend. Abbruch bei: Fehlern oder Cleanup-Problemen im ausgeführten Gate.
npm run test:e2eErwartung: Smoke-Tests und relevante Flows bestanden.
Abbruch bei: Kritischen E2E-Fehlern.
npm run buildErwartung: Build erfolgreich, Bundle-Budgets eingehalten.
Abbruch bei: Build-Fehlern oder Budget-Überschreitungen.
npm run sonarErwartung: Quality Gate für Projekt unosim ist grün. Mit
REQUIRE_RELEASE_GATE=1 ist SonarQube einschließlich Quality-Gate-Abfrage
verbindlich; ohne diese Variable ist der lokale Sonar-Schritt abhängig von der
verfügbaren Sonar-Umgebung und nicht das vollständige Release-Gate.
Abbruch bei: Rotem Quality Gate oder nicht akzeptierten kritischen Issues
im Release-Gate.
npm audit --omit=devErwartung: Keine kritischen, nicht akzeptierten Security-Befunde.
Abbruch bei: Kritischen Vulnerabilities ohne Akzeptanz/Workaround.
Manuelle Prüfung:
- Abhängigkeiten auf bekannte Sicherheitslücken prüfen (
npm audit) - Dockerfile.sandbox auf Security-Best-Practices prüfen
- Gateway-Konfiguration auf korrekte Secrets prüfen
npm run check:docsErwartung: Alle Markdown-Dateien syntaktisch korrekt.
Abbruch bei: Dokumentationsfehlern.
npm run test:load:50
npm run test:load:100
npm run test:load:200Zweck: Kapazitätsaussagen validieren.
Empfohlen: Vor Major-Releases oder bei Skalierungsänderungen.
RUN_HEAVY_TESTS=1 ./run-tests.shZweck: Produktionsszenarien mit realer Docker-Last.
Empfohlen: Vor Major-Releases oder bei Sandbox-Änderungen.
CLIENT_COUNT=40 npx playwright test --config=playwright.scalability.config.tsZweck: Viele gleichzeitige Clients simulieren.
Empfohlen: Bei WebSocket-/Frontend-Änderungen.
REQUIRE_RELEASE_GATE=1 ./run-tests.shEnthält:
- Pre-Flight-Checks (Node, Docker, Cleanup)
- Static Analysis (
npm run check) - Dead-Code Check (knip, nicht-blockierend)
- Unit-Tests (
npm run test:unit) - Integrationstests (
npm run test:integration) - Docker-Tests (
npm run test:docker) - E2E-Tests (
npm run test:e2e) - Build (
npm run build) - Bundle-Budget-Check
- Security-Audit und SonarQube-Quality-Gate
- Zusammenfassung
RUN_HEAVY_TESTS=1 ./run-tests.shEnthält zusätzlich:
- Heavy-Tests (Sandbox-Isolation, reale Docker-Last)
- Ausführliche Cleanup-Prüfung
Ein Release wird nicht freigegeben, wenn:
-
Ein Pflichtgate fehlschlägt:
- Typecheck rot
- Unit-/Integration-/Docker-/E2E-Tests fehlschlagen
- Build fehlschlägt oder Budgets überschreitet
- SonarQube Quality Gate rot
- Security-Audit kritische, nicht akzeptierte Befunde meldet
-
Reproduzierbarkeit nicht gegeben:
- Gates sind nicht lokal oder in CI reproduzierbar
- Erforderliche Secrets sind undokumentiert
- Docker-Sandbox-Image fehlt bei Docker-Gates
-
Sicherheit kompromittiert:
- Sandbox-Isolation nicht nachweisbar
- Gateway-Konfiguration unsicher (fehlende Secrets, öffentliche Bindings)
- Penetrationstest-Befunde nicht akzeptiert
-
Cleanup-Probleme:
- Container/Prozesse bleiben nach Tests zurück
- Ressourcen-Leaks in
./check-leaks.sh
-
Dokumentation inkonsistent:
- Geänderte Dokumentation besteht
npm run check:docsnicht - API-Dokumentation stimmt nicht mit Implementierung überein
- Geänderte Dokumentation besteht
Folgende Artefakte müssen pro Release vorhanden sein:
| Artefakt | Ort | Zweck |
|---|---|---|
| Testergebnisse | test-results/ |
Reproduzierbarkeit |
| Coverage-Bericht | coverage/ |
Testabdeckung |
| SonarQube-Report | SonarQube-Projekt unosim |
Quality Gate |
| Build-Artefakte | dist/ |
Auslieferbares Paket |
| Security-Audit | npm audit-Output |
Sicherheitsstatus |
| Release-Notes | CHANGELOG.md (falls vorhanden) |
Änderungen dokumentieren |
| Rolle | Verantwortung |
|---|---|
| Release Manager | Gate-Durchführung, Artefaktsammlung, Freigabeentscheidung |
| DevOps | Infrastruktur (Docker, SonarQube, CI), Pipeline-Wartung |
| Security | Security-Audit, Penetrationstests, Sandbox-Vertrag |
| Entwicklung | Behebung von Gate-Fehlern, Testabdeckung |
Ein Release gilt erst als freigegeben, wenn:
- Alle Pflichtgates grün sind
- Alle Artefakte vorliegen
- Security-Audit abgeschlossen und akzeptiert
- Release-Notes dokumentiert sind
- Release Manager die Freigabe explizit erteilt hat
Freigabe-Command (Beispiel):
# Nach erfolgreicher Pipeline:
echo "Release vX.Y.Z freigegeben am $(date)" >> RELEASE_LOG.md
git tag -a "vX.Y.Z" -m "Release vX.Y.Z"
git push origin vX.Y.Z- Fehler analysieren: Logs in
run-tests_output.logprüfen - Lokal reproduzieren: Fehler auf Entwicklermaschine nachstellen
- Beheben: Fix implementieren und testen
- Retest: Nur betroffene Gates wiederholen
- Dokumentieren: Incident im Release-Log festhalten
- Severity prüfen:
npm audit --audit-level=critical - Workaround identifizieren: Falls Patch nicht sofort verfügbar
- Akzeptanz entscheiden: Risiko vs. Betriebsnotwendigkeit
- Patch planen: Fix in nächstem Patch-Release
- Dokumentieren: Security-Incident reporten
| Version | Datum | Änderungen |
|---|---|---|
| 1.0.0 | 2026-09-06 | Initiale normative Runbook-Version; der aktuelle Implementierungsstand ist in den verlinkten Architektur-, Security- und Skalierungsdokumenten beschrieben. |
docs/TESTING_STANDARDS.md– TeststandardsSECURITY.md– SicherheitskontrollenINSTALL_SERVER.md– Serverinstallation und Administrationpackage.json– Scripts und Gatesrun-tests.sh– Vollständige Pipeline