Zum Inhalt

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

  1. Extension aktivieren (Marktplatz) — der Agent stellt sicher, dass git und rsync auf den betroffenen Servern vorhanden sind.
  2. 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

  1. Auf der Seite Git Deploy ein Repository anlegen: Provider (GitHub/GitLab/Gitea), Repository-URL, Branch und Ziel-Website.
  2. Für private Repositories wird ein Deploy-Key hinterlegt, der ausschließlich Lesezugriff auf das jeweilige Repository hat.
  3. 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.