Zum Inhalt springen

CI/CD & Releases

Orimora nutzt GitHub Actions für Continuous Integration und Coolify-Webhooks für Continuous Deployment. Releases folgen Semantic Versioning.

main ← produktionsreif, getaggte Releases
dev ← Integrationsbranch, alle Feature-Arbeit mergt hier zuerst
feature/*, fix/*, chore/* ← kurzlebige Branches von dev
BranchZweckMerge-Ziel
mainStabile Releases, deployed in Produktion
devIntegration und Testsmain (via PR)
feature/<name>Neue Featuresdev
fix/<name>Bugfixesdev (oder main bei Hotfixes)
chore/<name>Tooling, Dependency-Updatesdev
hotfix/<name>Kritische Produktions-Fixesdirekt main

Läuft bei jedem Push auf main/dev und bei jedem PR, der auf main zielt.

JobAufgabe
Lint & Typecheckoxlint, prettier --check, svelte-check, Starlight-Docs-Build
Unit Testsvitest run mit PostgreSQL- + Redis-Services
E2E SmokePlaywright-Smoke-Flow gegen eine gebaute App
Production Buildvite build — verifiziert, dass die App kompiliert
Docker BuildBaut das Docker-Image (Dry-Run, kein Push)
Security Audityarn audit --level moderate
License Complianceyarn licenses:check + licenses:notice (blockt GPL/AGPL/SSPL)

Alle Jobs müssen grün sein, bevor ein PR gemergt werden kann.

Ausgelöst durch das Pushen eines Version-Tags (v*).

SchrittAufgabe
CI-Gate verifizierenPollt die Required-Checks des getaggten Commits; bricht ab, falls CI nicht grün ist
Docker-Image bauenMulti-Arch (linux/amd64 + linux/arm64)
Vulnerability-ScanTrivy-Scan des Images; schlägt bei HIGH/CRITICAL fehl
Push zu GHCRghcr.io/defcon1702/orimora:<version> (+ :latest/:{major}.{minor} für stabile Tags)
GitHub Release erstellenAutomatisch generierte Release Notes
Terminal-Fenster
# 1. Auf dem dev-Branch Version aktualisieren
yarn version --new-version 0.2.0
# 2. CHANGELOG.md aktualisieren
# 3. PR erstellen: dev → main
gh pr create --title "Release v0.2.0" --body "..."
# 4. Nach Merge taggen und pushen
git checkout main && git pull
git tag v0.2.0
git push origin v0.2.0

Der Tag-Push löst den Release-Workflow automatisch aus.

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 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.

Alle Commits folgen Conventional Commits:

feat: add tag filtering to sidebar
fix: prevent duplicate document creation
refactor: extract search into dedicated service
test: add permission check unit tests
docs: update deployment guide
chore: upgrade drizzle-orm

Breaking Changes nutzen ! und einen BREAKING CHANGE:-Footer:

feat!: change document API response format
BREAKING CHANGE: documents.list now returns paginated wrapper