Staging runbook (Issue #20)
Mål
Staging-miljø for WPP i Proxmox LXC, så release-klar kode kan deployes og smoke-testes sikkert.
Miljø
- LXC: CT 143 (wpp-staging)
- App path: /opt/wpp-staging/app
- Service: wpp-staging.service
- Health endpoint: GET /healthz
- Database: MySQL (staging må ikke bruge SQLite, issue #133)
Verifikation
Kør fra devops-shell med Proxmox-adgang:
ssh proxmox-lan "sudo -n pct status 143"
ssh proxmox-lan "sudo -n pct exec 143 -- systemctl is-active wpp-staging.service"
ssh proxmox-lan "sudo -n pct exec 143 -- curl -fsS http://127.0.0.1:8000/healthz"
Forventet:
- CT er running
- service er active
- healthz returnerer JSON med ok=true
Efter deploy validerer scriptet, at DB_ENGINE ikke er django.db.backends.sqlite3 før migrations køres.
Deploy-scriptet bruger en release-candidate mappe og promoverer først til /opt/wpp-staging/app efter succesfuld migrate. Det reducerer schema/code drift ved afbrudte deploys (issue #130) og understøtter release-readiness gate (issue #90).
Deploy (canonical execution context)
Deploy skal altid køres via Proxmox host over SSH (ikke fra lokal coder-shell med direkte sudo pct).
Officiel kommando:
./infra/staging/deploy_staging.sh [ref]
Scriptet bruger default PROXMOX_HOST=proxmox-lan og kører sudo -n pct exec på hosten.
Eksempler:
./infra/staging/deploy_staging.sh
./infra/staging/deploy_staging.sh v0.3.0
PROXMOX_HOST=proxmox-prod ./infra/staging/deploy_staging.sh main
Policy-kobling
Før deploy:
- Bekræft at tester ikke er aktiv (ingen aktiv smoke-run).
- Deploy til staging skal lykkes.
- Først derefter må release-tag oprettes (se docs/RELEASE_POLICY.md).