fix: repair gitea deploy pipeline
This commit is contained in:
+18
-17
@@ -1,45 +1,46 @@
|
||||
# Deployment
|
||||
|
||||
> Letzte Aktualisierung: 2026-06-21
|
||||
> Status: ✅ CD v3 (Auto + Manual) + Owner-Passwort-Persistenz (SeedAudit)
|
||||
> Letzte Aktualisierung: 2026-06-24
|
||||
> Status: ✅ CD v4 (Auto inside CI + Manual) + Owner-Passwort-Persistenz (SeedAudit)
|
||||
> Live-URL: https://nexus.noveria.net
|
||||
|
||||
## CD-Philosophie (v3)
|
||||
## CD-Philosophie (v4)
|
||||
|
||||
- **CI läuft automatisch** bei jedem Push → darf nie brechen
|
||||
- **CD auto + manuell**: Automatischer Deploy nach CI-Success auf main; manueller Deploy via `workflow_dispatch`
|
||||
- **Loop-Schutz**: Commits mit `[skip ci]` werden von Auto-Deploys ignoriert
|
||||
- **CD auto + manuell**: Automatischer Deploy als abschließender CI-Job auf main; manueller Deploy via `workflow_dispatch`
|
||||
- **Loop-Schutz**: Deploy mutiert Git nicht und erzeugt deshalb keine Deploy-Schleifen
|
||||
- Deploy liest und validiert `VERSION`, mutiert aber weder Git noch Tags
|
||||
- **Rollback** als eigener Workflow, manuell triggerbar
|
||||
- **Database-Backup** als eigener Workflow, manuell triggerbar (optionaler Nightly-Schedule)
|
||||
|
||||
## Workflows
|
||||
|
||||
### Deploy (`.gitea/workflows/deploy.yaml`)
|
||||
### Auto-Deploy (`.gitea/workflows/ci.yaml`)
|
||||
|
||||
**Trigger**:
|
||||
- **Automatisch**: Der Job `Deploy Nexus` läuft nach `backend`, `frontend` und `security`.
|
||||
- Bedingung: Push auf `main`, alle CI-Jobs grün.
|
||||
- Grund: Gitea 1.26.3 hat für grüne CI-Runs 303/304 keinen `workflow_run`-Deploy erzeugt; der zuverlässigste Ersatz ist ein `needs`-gesteuerter Job im selben Workflow.
|
||||
|
||||
### Manual Deploy (`.gitea/workflows/deploy.yaml`)
|
||||
|
||||
**Trigger**:
|
||||
- **Automatisch**: Nach erfolgreicher CI (`workflow_run` auf `CI - Build & Test`)
|
||||
→ Deployt `main` mit dem im Repo gesetzten `VERSION`-Wert
|
||||
- **Manuell**: Via Gitea Actions → `workflow_dispatch`
|
||||
|
||||
**Loop-Schutz**:
|
||||
- Version-Bump-Commits enthalten `[skip ci]` → Gitea startet keine neue CI
|
||||
- Auto-Deploy prüft zusätzlich `github.event.workflow_run.head_commit.message` auf `[skip ci]`
|
||||
- Beide Mechanismen zusammen verhindern Endlosschleife: CI → Deploy → Bump → CI …
|
||||
- Deploy erstellt keine Commits, Tags oder Version-Bumps. Dadurch entsteht keine CI/CD-Schleife.
|
||||
|
||||
**Inputs**: keine. Der manuelle Deploy nutzt denselben Main-Deploy-Pfad wie der Auto-Deploy.
|
||||
|
||||
**Ablauf**:
|
||||
1. Job-Level-Guard: Auto-Deploys fuer `[skip ci]`-Commits werden gar nicht gestartet
|
||||
2. Checkout von `main`
|
||||
1. Checkout von `main` (beim manuellen Deploy) oder Nutzung des geprüften CI-Checkouts (Auto-Deploy)
|
||||
2. `.gitea/scripts/deploy-nexus.sh`
|
||||
3. `VERSION` lesen und SemVer validieren
|
||||
4. **Safe Secret Handling**: `.env` wird aus Secret-Umgebungsvariablen in `/tmp/nexus-deploy-env` geschrieben (mode 600), **NICHT** im Workspace
|
||||
5. Code-Sync zum Host-Deploy-Pfad
|
||||
6. `docker compose build && up -d --force-recreate`
|
||||
6. `docker compose build && up -d --force-recreate --remove-orphans --wait`
|
||||
7. `.env`-Tempfile wird mit `shred` gelöscht
|
||||
8. Health-Check (Backoff, 6 Versuche)
|
||||
9. Smoke-Test (`/dashboard`, `/health`, `/api/v1/operations/snapshot` erwartet `401`)
|
||||
10. Bei Fehler: Reviewer-Handoff-Meldung mit Job-URL
|
||||
8. Health-Check und Smoke-Test (`/dashboard`, `/health`, `/api/v1/operations/snapshot` erwartet `401`)
|
||||
|
||||
### Backup (`.gitea/workflows/backup.yaml`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user