CI/CD & Releases
Orimora nutzt GitHub Actions für Continuous Integration und Coolify-Webhooks für Continuous Deployment. Releases folgen Semantic Versioning.
Branching-Modell
Abschnitt betitelt „Branching-Modell“main ← produktionsreif, getaggte Releases ↑dev ← Integrationsbranch, alle Feature-Arbeit mergt hier zuerst ↑feature/*, fix/*, chore/* ← kurzlebige Branches von dev| Branch | Zweck | Merge-Ziel |
|---|---|---|
main | Stabile Releases, deployed in Produktion | — |
dev | Integration und Tests | main (via PR) |
feature/<name> | Neue Features | dev |
fix/<name> | Bugfixes | dev (oder main bei Hotfixes) |
chore/<name> | Tooling, Dependency-Updates | dev |
hotfix/<name> | Kritische Produktions-Fixes | direkt main |
CI-Pipeline (.github/workflows/ci.yml)
Abschnitt betitelt „CI-Pipeline (.github/workflows/ci.yml)“Läuft bei jedem Push auf main/dev und bei jedem PR, der auf main zielt.
| Job | Aufgabe |
|---|---|
| Lint & Typecheck | oxlint, prettier --check, svelte-check, Starlight-Docs-Build |
| Unit Tests | vitest run mit PostgreSQL- + Redis-Services |
| E2E Smoke | Playwright-Smoke-Flow gegen eine gebaute App |
| Production Build | vite build — verifiziert, dass die App kompiliert |
| Docker Build | Baut das Docker-Image (Dry-Run, kein Push) |
| Security Audit | yarn audit --level moderate |
| License Compliance | yarn licenses:check + licenses:notice (blockt GPL/AGPL/SSPL) |
Alle Jobs müssen grün sein, bevor ein PR gemergt werden kann.
Release-Pipeline (.github/workflows/release.yml)
Abschnitt betitelt „Release-Pipeline (.github/workflows/release.yml)“Ausgelöst durch das Pushen eines Version-Tags (v*).
| Schritt | Aufgabe |
|---|---|
| CI-Gate verifizieren | Pollt die Required-Checks des getaggten Commits; bricht ab, falls CI nicht grün ist |
| Docker-Image bauen | Multi-Arch (linux/amd64 + linux/arm64) |
| Vulnerability-Scan | Trivy-Scan des Images; schlägt bei HIGH/CRITICAL fehl |
| Push zu GHCR | ghcr.io/defcon1702/orimora:<version> (+ :latest/:{major}.{minor} für stabile Tags) |
| GitHub Release erstellen | Automatisch generierte Release Notes |
Release-Prozess
Abschnitt betitelt „Release-Prozess“# 1. Auf dem dev-Branch Version aktualisierenyarn version --new-version 0.2.0
# 2. CHANGELOG.md aktualisieren
# 3. PR erstellen: dev → maingh pr create --title "Release v0.2.0" --body "..."
# 4. Nach Merge taggen und pushengit checkout main && git pullgit tag v0.2.0git push origin v0.2.0Der Tag-Push löst den Release-Workflow automatisch aus.
Versionierungsschema
Abschnitt betitelt „Versionierungsschema“Orimora folgt Semantic Versioning (vMAJOR.MINOR.PATCH):
- MAJOR — Breaking-Änderungen an API oder Schema
- MINOR — neue Features, abwärtskompatibel
- PATCH — Bugfixes
Pre-Release-Versionen nutzen Suffixe: v0.1.0-beta.1, v0.1.0-rc.1.
Coolify Auto-Deploy
Abschnitt betitelt „Coolify Auto-Deploy“Coolify lauscht auf GitHub-Webhooks und löst einen Build+Deploy aus, wenn:
- Ein Push auf dem konfigurierten Branch (
main) landet - Die geänderten Dateien zu den Watch Paths passen (falls konfiguriert)
Für das Deployment ist keine zusätzliche CI/CD-Konfiguration nötig — Coolify übernimmt den Docker-Build und den Rolling Restart.
Commit-Konventionen
Abschnitt betitelt „Commit-Konventionen“Alle Commits folgen Conventional Commits:
feat: add tag filtering to sidebarfix: prevent duplicate document creationrefactor: extract search into dedicated servicetest: add permission check unit testsdocs: update deployment guidechore: upgrade drizzle-ormBreaking Changes nutzen ! und einen BREAKING CHANGE:-Footer:
feat!: change document API response format
BREAKING CHANGE: documents.list now returns paginated wrapper