Deployment & Rollback

Erstellt: 2025-12-20 | Aktualisiert: 2025-12-31

Synchronisiert Code-Änderungen von der Entwicklungsumgebung zur Produktion. Ermöglicht sicheres Testen auf dev bevor Änderungen live gehen. Bei Problemen kann auf den letzten Stand zurückgerollt werden.

Script/var/www/scripts/sync-dev-prod.sh
Richtungdev → prod
Pre-ChecksContract Validation, PHPStan, PHP-CS-Fixer, Composer Audit, Semgrep, PHPUnit
RollbackAus /backup/ wiederherstellen

Pre-Deployment Checks

Das Sync-Script führt automatisch alle Quality- und Security-Checks durch. Bei Fehlern wird der Sync abgebrochen.

Check 1: Contract Validation

ContractPrüftBlockiert bei
View Structure v1.0CRUD-Views, StrukturCritical
HTML Tables v1.0Modals, Aktionen-SpalteCritical
CSS Contract v1.0Stylelint-RegelnMajor
Python Pipeline v1.0Ruff, mypyMajor
Layered Architecture v1.0Layer-GrenzenCritical
Betriebsdokumentation v1.1Docs-StrukturMajor

Script: /var/www/scripts/contract-check.sh

Dokumentation: Contracts

Check 2: PHP Quality Check

ToolPrüftBlockiert bei
PHPStan + Strict RulesTypen, Null-Safety, BugsErrors
PHP-CS-FixerPSR-12 Code StyleStyle Issues
Composer AuditDependency CVEsVulnerabilities
SemgrepOWASP SecuritySecurity Findings

Check 3: PHPUnit Tests

Alle Unit-Tests im tests/ Verzeichnis müssen bestehen.

Bei fehlgeschlagenen Checks

# Contract Validation fehlgeschlagen:
❌ SYNC ABGEBROCHEN: Contract Validation fehlgeschlagen
   Behebe die Contract-Violations und versuche es erneut.
   Tipp: /var/www/scripts/contract-check.sh

# PHP Quality Check fehlgeschlagen:
❌ SYNC ABGEBROCHEN: PHP Quality Check fehlgeschlagen
   Behebe die Fehler und versuche es erneut.
   Tipp: /var/www/scripts/php-check.sh /var/www/dev.campus.systemische-tools.de --fix

Deployment ausführen

Standard-Deployment

/var/www/scripts/sync-dev-prod.sh

Erwartete Ausgabe (Erfolg)

=== Sync Dev → Prod: Sat Dec 20 10:00:00 CET 2025 ===

=== Contract Validation ===
[1/6] View Structure Contract v1.0
  OK tasks/*
  OK content/*
...

=== PHP Quality Check ===
[1/4] PHPStan - Static Analysis + Strict Rules
✓ PHPStan: OK
...

=== Summary ===
All checks passed!

=== PHPUnit Tests ===
PHPUnit 12.5.4
✓ All tests passed!

sending incremental file list
...
=== Sync abgeschlossen ===

Was wird synchronisiert

VerzeichnisInhaltrsync-Flags
src/Backend (MVC)--delete (entfernt gelöschte Dateien)
app/Frontend (MVP)--delete
routes/Web-Routes-av
config/Autoloader (ohne config.php)--exclude='config.php'
public/css/Stylesheets--exclude='static-docs'
public/js/JavaScript-av
public/images/Bilder-av
public/index.phpEntry Point-av
public/.htaccessApache Config-av

Was wird NICHT synchronisiert

Nach dem Sync

Das Script führt automatisch /var/www/scripts/fix-permissions.sh aus, um die Dateiberechtigungen (www-data:www-data, 755) zu setzen.

Rollback-Verfahren

Bei Problemen nach dem Deployment kann der vorherige Stand aus dem Backup wiederhergestellt werden.

Schritt 1: Backup identifizieren

# Verfügbare Backups anzeigen
ls -la /backup/

Schritt 2: Vollständiger Rollback (prod)

# Prod-Verzeichnis komplett wiederherstellen
cd /
tar -xzf /backup/2025-12-20_03-00/www.tar.gz var/www/prod.campus.systemische-tools.de

# Berechtigungen setzen
/var/www/scripts/fix-permissions.sh

Schritt 3: Datenbank-Rollback (falls nötig)

# Dump entpacken
gunzip -k /backup/2025-12-20_03-00/mariadb_all.sql.gz

# Datenbank wiederherstellen
mariadb < /backup/2025-12-20_03-00/mariadb_all.sql

# Oder einzelne Datenbank:
sed -n '/^-- Current Database: `ki_dev`/,/^-- Current Database:/p' \
    /backup/2025-12-20_03-00/mariadb_all.sql > /tmp/ki_dev.sql
mariadb ki_dev < /tmp/ki_dev.sql

Notfall-Rollback (Schnell)

# Letztes Backup finden
LATEST=$(ls -1d /backup/*/ | tail -1)

# Vollständiger Prod-Rollback
cd / && tar -xzf "${LATEST}www.tar.gz" var/www/prod.campus.systemische-tools.de

# Berechtigungen
/var/www/scripts/fix-permissions.sh

# Verifizieren
curl -I https://campus.systemische-tools.de

Workflow

┌─────────────────────────────────────────────────────────────┐
│                    DEPLOYMENT WORKFLOW                       │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  1. ENTWICKLUNG                                              │
│     └── Änderungen auf dev.campus.systemische-tools.de      │
│                          ↓                                   │
│  2. TESTEN                                                   │
│     └── Funktionalität auf dev prüfen                       │
│                          ↓                                   │
│  3. PRE-CHECKS (automatisch)                                │
│     ├── Contract Validation (6 Contracts)                   │
│     ├── PHPStan (Typen, Bugs)                               │
│     ├── PHP-CS-Fixer (Style)                                │
│     ├── Composer Audit (CVEs)                               │
│     ├── Semgrep (Security)                                  │
│     └── PHPUnit (Tests)                                     │
│              ↓ OK              ↓ FAIL                        │
│  4. SYNC                    ABBRUCH                          │
│     └── rsync dev → prod       └── Fehler beheben           │
│              ↓                                               │
│  5. VERIFIZIEREN                                            │
│     └── Produktion prüfen                                   │
│              ↓ OK              ↓ PROBLEM                     │
│        FERTIG              ROLLBACK                          │
│                                └── Aus Backup wiederherstellen│
│                                                              │
└─────────────────────────────────────────────────────────────┘

Checkliste vor Deployment

Verwandte Themen