2.4 KiB
2.4 KiB
Git Workflow & Deployment Specification
Dieses Dokument beschreibt den standardisierten Release-Ablauf und die CI/CD-Logik für Gitea.
1. Branching-Modell
Wir nutzen einen vereinfachten, stabilen Release-Workflow mit zwei Haupt-Branches:
main(Development / Spielwiese):- Tägliche Entwicklung, Experimente, lokale Tests (venv / local Docker).
- Änderungen werden direkt hier committet oder aus Feature-Branches hineingemergt.
stable(Production / Freeze):- Spiegelt exakt den Live-Stand der Produktion wider.
- Direct Commits sind tabu. Änderungen gelangen ausschließlich per Merge aus
mainhierhin.
2. Release-Ablauf (Dev nach Prod)
Sobald ein Stand auf main lokal getestet und einsatzbereit ist:
Variante A: Via Terminal (CLI)
# 1. Lokalen Stand auf main sichern
git checkout main
git pull
# 2. Auf stable wechseln und main hineinmergen
git checkout stable
git merge main
# 3. Release nach Gitea pushen (Triggert CI/CD)
git push origin stable
# 4. Zurück auf main für die weitere Entwicklung
git checkout main
Variante B: Via VSCodium Git-UI
- Unten links den Branch von
mainaufstablewechseln. - Befehlspalette öffnen (
Ctrl + Shift + P) ->Git: Branch mergen...->mainauswählen. - Auf Änderungen synchronisieren (Push) klicken.
- Unten links wieder zurück auf
mainwechseln.
3. Gitea Runner & Deployment Logic
Der Rebuild auf dem Produktionsserver wird vollautomatisch über Gitea Actions getriggert.
- Trigger: Das Deployment startet nur, wenn Änderungen auf den Branch
stablegepushed werden. - Workflow-Datei:
.gitea/workflows/deploy.yml
.gitea/workflows/deploy.yml Template:
name: Production Deployment
on:
push:
branches:
- 'stable'
jobs:
deploy:
runs-on: self-hosted
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Rebuild & Restart Docker Containers
run: |
docker compose down
docker compose up --build -d --pull always
docker image prune -f
4. Regeln für AI-Agenten (Vibe / Roo Code)
- Agenten arbeiten ausschließlich auf dem
main-Branch. - Agenten dürfen niemals eigenständig einen Merge auf
stabledurchführen oder Commits aufstablepushen. - Das Erstellen von
.envDateien aufstableist untersagt (Nutzung der Server-Umgebungsvariablen via.env.example).
---