# GWP Deployment & Git Workflow Dokumentation

## Übersicht

Dieses Dokument beschreibt die aktuelle Struktur sowie den Deployment-Workflow
für das Projekt **gwp.bulme.at**.

Das Ziel:

- Saubere Trennung zwischen Entwicklung und Produktion
- Git als zentrale Versionsverwaltung
- Sichere Updates über Pull statt manuelle Änderungen
- Möglichkeit zum schnellen Rollback

---

# Serverstruktur

## Apache DocumentRoot


/var/www/gwp.bulme.at/htdocs/live/


- Wird direkt von Apache verwendet:

https://gwp.bulme.at/


- Hier läuft das Produktivsystem.

---

## Symlinks innerhalb von `live/`

Diese Verzeichnisse sind **keine Git-Inhalte**:


ka/ -> /var/www/gwp.bulme.at/htdocs/shared/ka-vXXX
epaper/ -> /var/www/gwp.bulme.at/htdocs/shared/epaper-live
info/ -> /var/www/gwp.bulme.at/htdocs/shared/infoscreen-live
developer/ -> /var/www/gwp.bulme.at/htdocs/developer


👉 Diese müssen in `.gitignore` stehen:


/ka
/epaper
/info
/developer


---

## Entwickler-Verzeichnis


/var/www/gwp.bulme.at/htdocs/developer/


Hier wird gearbeitet.

- Aktueller Entwicklungsbranch:


v002


---

## Zentrales Git Repository


/var/www/gwp.bulme.at/htdocs/git/gwp.git


Typ:

- Bare Repository
- Zentrale Quelle für alle Push/Pull Aktionen

---

# Branch Strategie

| Branch | Zweck |
|------|------|
| v002 | Aktuelle Produktivversion (live läuft darauf) |
| v001 | Alte Version (Rollback möglich) |

---

# Entwickler Workflow

## Änderungen committen


cd /var/www/gwp.bulme.at/htdocs/developer

git status
git add -A
git commit -m "Beschreibung der Änderung"


## Änderungen pushen


git push origin v002


---

# Deployment Workflow (Live aktualisieren)


cd /var/www/gwp.bulme.at/htdocs/live

git fetch --all --prune
git checkout v002
git pull --ff-only origin v002


---

## Composer (SEHR WICHTIG)

Nach jedem Pull oder Branchwechsel:


composer install --no-dev --optimize-autoloader


Wichtig:

- Immer im Projekt-Root ausführen
- Dort wo die `composer.json` liegt

NICHT:


live/dompdf/


---

## Apache Reload (optional aber empfohlen)


sudo apachectl configtest
sudo systemctl reload apache2


---

# Rollback Workflow

## Rollback auf eine ältere Version per Tag

Tags sind die sauberste Methode.

### Tags anzeigen


git tag


### Auf Tag wechseln


cd /var/www/gwp.bulme.at/htdocs/live

git fetch --tags
git checkout tags/v001


Danach:


composer install --no-dev --optimize-autoloader
sudo systemctl reload apache2


---

## Rollback auf bestimmten Commit

Commitliste anzeigen:


git log --oneline --decorate


Rollback:


git checkout <commit-hash>
composer install --no-dev --optimize-autoloader
sudo systemctl reload apache2


---

## Zurück auf Produktivbranch (v002)


cd /var/www/gwp.bulme.at/htdocs/live

git checkout v002
git pull --ff-only origin v002
composer install --no-dev --optimize-autoloader
sudo systemctl reload apache2


---

# Release Workflow (Empfohlen)

Wenn ein Stand stabil ist:


cd /var/www/gwp.bulme.at/htdocs/developer

git checkout v002
git pull

git tag v002.0
git push origin v002.0


Vorteile:

- Schnelles Rollback möglich
- Klare Versionshistorie

---

# Wichtige Regeln

## ❌ NIEMALS im live-Verzeichnis entwickeln

Live darf nur:

- git pull
- composer install

---

## ❌ Vendor Ordner nicht manuell kopieren

Composer verwaltet Dependencies:


composer install --no-dev --optimize-autoloader


---

## ❌ Symlinks nicht versionieren

Immer ignorieren:


developer/
ka/
epaper/
info/


---

# Best Practice (Optional aber empfohlen)

- Nur ein Produktivbranch (z.B. `main`)
- Entwicklung auf `dev` oder `v002`
- Release durch Merge + Tag

---

# Ende