3.5 KiB
3.5 KiB
type, status, owner, last_update
| type | status | owner | last_update |
|---|---|---|---|
| Guide | ACTIVE | Lead Architect | 2026-04-28 |
Git Branching & Deployment Strategy (Meldestelle)
Um parallele Weiterentwicklung und stabile Feld-Tests zu ermöglichen, nutzen wir einen vereinfachten GitHub Flow mit Release-Tags. Da wir ein kleines Team (bzw. Solo-Entwickler mit KI-Agents) sind, verzichten wir auf übermäßig komplexe Git-Flow-Modelle (wie develop, release/*, hotfix/*), stellen aber Stabilität für Deployments sicher.
1. Branching-Struktur
main (Source of Truth / Production)
- Zweck: Enthält immer den aktuellen, stabilen und im Feld getesteten/auslieferbaren Code.
- Regel: Direkte Commits auf
mainsind tabu (außer Notfall-Hotfixes). - Deployment: Ein Push/Merge auf
mainbedeutet nicht zwingend ein sofortiges Deployment auf Zora, aber der Code ist bereit dafür.
Feature Branches (feature/* oder fix/*)
- Zweck: Hier findet die eigentliche Entwicklung statt (z.B. neue Bounded Contexts, Wizards).
- Namenskonvention:
feature/event-wizard-neu,fix/zns-import-bug - Lebensdauer: So kurz wie möglich. Sobald ein Feature/Fix in sich geschlossen und lokal getestet ist, wird ein Pull Request (PR) auf
mainerstellt.
Release Tags (v1.x.x)
- Zweck: Markiert einen spezifischen, stabilen Punkt auf dem
main-Branch, der tatsächlich für ein Turnier (Feld-Test) deployed wurde. - Szenario: Du hast Version
v1.2.0(Plan-B) für ein Turnier deployed. Du entwickelst weiter auffeature/*und mergest inmain. Das nächste Turnier bekommt dann Tagv1.3.0.
2. Der Workflow im Alltag
- Start:
git checkout main->git pull->git checkout -b feature/mein-neues-feature - Entwicklung: Arbeiten, KI-Agents nutzen, Commits machen.
- Abschluss: Feature ist fertig.
- Merge: Pull Request in Gitea erstellen (oder lokal:
git checkout main,git merge feature/mein-neues-feature,git push). - Aufräumen:
git branch -d feature/mein-neues-feature
3. Strategie für Feld-Tests (Turnier-Einsatz)
Wenn ein Turnier ansteht und ein stabiler Stand eingefroren werden muss:
- Stelle sicher, dass
mainden gewünschten Zustand hat. - Setze einen Tag in Git:
git tag -a v1.2.0 -m "Release für Turnier in Neumarkt" - Pushe den Tag:
git push origin v1.2.0 - Deployment: Das Deployment-Skript zieht sich diesen Tag auf Zora (oder baut den Docker-Container aus diesem Tag).
Was passiert, wenn während des Turniers ein Bug auftritt (Hotfix)?
Szenario: Das Turnier läuft auf v1.2.0. Auf main gibt es schon neuere Features (unfertig).
- Checkout des stabilen Tags:
git checkout -b hotfix/turnier-fix v1.2.0 - Bug fixen, committen.
- Neuen Tag für das Deployment setzen:
git tag -a v1.2.1 -m "Hotfix ZNS Import" git push origin v1.2.1-> Fix wird auf Zora deployed.- WICHTIG (Backport): Damit der Fix nicht verloren geht, den Hotfix-Branch danach in
mainmergen:git checkout main,git merge hotfix/turnier-fix.
4. Gitea Actions (CI/CD)
- Pushes auf
feature/*: Führen Code-Checks/Tests aus. - Pushes auf
main: Führen erweiterte Tests aus und bauen Docker-Images mit dem Taglatestsowie dem Git-SHA in die interne Registry (10.0.0.22:3000). - Erstellung eines Tags (
v*): Triggert automatisch den Build und Push von Docker-Images in die interne Registry. Das Image erhält den Namen des Tags (z.B.:v1.2.0). Dies ist die Basis für stabile Deployments auf Zora.