Git Deploy¶
Die Git-Deploy-Extension stellt Websites automatisch aus einem Git-Repository (GitHub, GitLab oder selbstgehostetem Gitea) bereit — per Git Pull, mit Webhook-Auto-Deploy bei jedem Push, Signaturprüfung, Pre-Deploy-Commands und Ein-Klick-Rollback auf jeden vorherigen Commit. Sie wird als Opt-in-Extension über den Marktplatz installiert.
Installation & Freigabe¶
- Extension aktivieren (Marktplatz) — der Agent stellt sicher, dass
gitundrsyncauf den betroffenen Servern vorhanden sind. - Paket-Permission — im Paket legt der Admin mit Git Deploy erlauben (
perm_git_deploy) fest, ob ein Kunde eigene Websites aus externen Git-Repositories bereitstellen darf — manuell oder automatisch per Webhook.
Ein Repository verbinden¶
- Auf der Seite Git Deploy ein Repository anlegen: Provider (GitHub/GitLab/Gitea), Repository-URL, Branch und Ziel-Website.
- Für private Repositories wird ein Deploy-Key hinterlegt, der ausschließlich Lesezugriff auf das jeweilige Repository hat.
- Optional Pre-Deploy-Commands hinterlegen (z. B.
composer install,npm run build) — sie laufen automatisch vor jedem Deployment.
Deployen¶
- Manuell — ein Klick auf Deploy in der Repository-Übersicht.
- Automatisch per Webhook — die Seite zeigt die Webhook-URL und ein Secret, das im Provider (GitHub/GitLab/Gitea) hinterlegt wird. Eingehende Webhooks werden per HMAC-Signatur verifiziert; nur Pushes auf den konfigurierten Branch lösen ein Deployment aus, alle anderen werden ignoriert.
Jedes Deployment wird protokolliert: Commit, Zeitpunkt, Status und vollständige Log-Ausgabe sind über Historie einsehbar. Ein fehlgeschlagenes Deployment bricht ab, ohne die aktuell laufende Live-Site zu verändern.
Rollback¶
Über die Deployment-Historie lässt sich mit einem Klick auf jeden vorherigen Commit zurückrollen — unabhängig davon, wie viele Deployments seitdem gelaufen sind.
Sicherheitsmodell¶
- Deployments laufen als der Linux-User der Website — keine Root-Rechte nötig.
- Jede Site hat ihr eigenes Webhook-Secret.
- Der Deploy-Key für private Repositories ist read-only auf Repository-Ebene.
- Die Runtime-Abhängigkeiten (
git,rsync) werden nur auf Servern installiert, auf denen die Extension aktiviert ist.
Noch nicht enthalten¶
- Multi-Branch-Deployments (z. B. automatisches Staging pro Feature-Branch).
- Build-Container — Pre-Deploy-Commands laufen direkt als der Site-User, nicht in einer isolierten Build-Umgebung.