chore: simplify nexus cicd pipeline
This commit is contained in:
+15
-23
@@ -7,10 +7,9 @@
|
||||
## CD-Philosophie (v3)
|
||||
|
||||
- **CI läuft automatisch** bei jedem Push → darf nie brechen
|
||||
- **CD auto + manuell**: Automaticher Deploy nach CI-Success auf main (patch default), manueller Deploy mit voller Kontrolle via `workflow_dispatch`
|
||||
- **Loop-Schutz**: Version-Bump-Commits enthalten `[skip ci]` — kein Re-Trigger der CI, kein Infinite-Loop
|
||||
- **Main-Deploys** duerfen VERSION bumpen und einen Git-Tag setzen
|
||||
- **Nicht-Main-Deploys** (anderer `git_ref`) deployen read-only und mutieren Git nicht
|
||||
- **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
|
||||
- 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)
|
||||
|
||||
@@ -20,7 +19,7 @@
|
||||
|
||||
**Trigger**:
|
||||
- **Automatisch**: Nach erfolgreicher CI (`workflow_run` auf `CI - Build & Test`)
|
||||
→ Default-Parameter: patch bump, all services, main ref
|
||||
→ Deployt `main` mit dem im Repo gesetzten `VERSION`-Wert
|
||||
- **Manuell**: Via Gitea Actions → `workflow_dispatch`
|
||||
|
||||
**Loop-Schutz**:
|
||||
@@ -28,26 +27,19 @@
|
||||
- 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 …
|
||||
|
||||
**Inputs** (nur bei `workflow_dispatch`):
|
||||
| Input | Typ | Default | Beschreibung |
|
||||
|---|---|---|---|
|
||||
| `version_bump` | choice (patch/minor/major) | patch | Version-Bump-Typ |
|
||||
| `service` | string | (all) | Einzelner Service oder alle |
|
||||
| `no_cache` | boolean | false | Docker-Build-Cache deaktivieren |
|
||||
| `git_ref` | string | main | Branch/Tag/Commit zum Deployen |
|
||||
**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 des gewählten Git-Refs
|
||||
3. Wenn `git_ref = main`: Version-Bump + Git-Tag + Push
|
||||
4. Wenn `git_ref != main`: VERSION nur lesen, kein Push, kein Tag
|
||||
5. **Safe Secret Handling**: `.env` wird aus Secret-Umgebungsvariablen in `/tmp/nexus-deploy-env` geschrieben (mode 600), **NICHT** im Workspace
|
||||
6. Code-Sync zum Host-Deploy-Pfad
|
||||
7. `docker compose build && up -d --wait --force-recreate`
|
||||
8. `.env`-Tempfile wird mit `shred` gelöscht
|
||||
9. Health-Check (exponentieller Backoff, 6 Versuche)
|
||||
10. Smoke-Test (`/dashboard`, `/health`, `/api/v1/operations/snapshot` erwartet `401`)
|
||||
11. Bei Fehler: Reviewer-Handoff-Meldung mit Job-URL
|
||||
2. Checkout von `main`
|
||||
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`
|
||||
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
|
||||
|
||||
### Backup (`.gitea/workflows/backup.yaml`)
|
||||
|
||||
@@ -222,7 +214,7 @@ Stelle sicher, dass `.env` existiert und alle `***`-Platzhalter ersetzt sind.
|
||||
2. `curl http://127.0.0.1:18880/health`
|
||||
3. Falls `health=200`, aber `/dashboard` noch nicht `200` und `web` auf `Created` steht: `docker compose up -d web`
|
||||
4. Danach extern `/dashboard`, `/health` und `/api/v1/operations/snapshot` erneut prüfen
|
||||
- Der manuelle Helper [`ops/deploy.sh`](/home/node/.openclaw/workspace/nexus/ops/deploy.sh) verifiziert deshalb jetzt nicht mehr nur `/health`, sondern auch `/dashboard` und den Auth-Schutz der Operations-API.
|
||||
- Der CD-Pfad verifiziert deshalb nicht mehr nur `/health`, sondern auch `/dashboard` und den Auth-Schutz der Operations-API.
|
||||
|
||||
## Offene Arbeit
|
||||
|
||||
|
||||
Reference in New Issue
Block a user