Zum Inhalt springen
Inhalt
Websites

Bereitstellen einer Website über Git

Maschinelle Übersetzung. Das englische Original ist verfügbar.

Git Deploy verbindet ein Repository mit einer Website, sodass jeder Push auf den gewählten Branch den Code klont, Ihren Build ausführt und das Ergebnis veröffentlicht. Diese Anleitung behandelt die Erstverbindung, die beiden Schritte auf Repository-Seite, die das Setup abschließen, das Auslesen des Bereitstellungsverlaufs und die Buildpack-Erkennung, die bestimmt, wie eine Node.js-App gebaut wird.

Wo Sie Git Deploy Finden

Öffnen Sie Websites, klicken Sie auf die Website, öffnen Sie die Gruppe Environment im linken Menü der Website, und wählen Sie Git-Deploy. Zwei verwandte Seiten befinden sich in der Nähe:

  • Deployments, der vollständige Bereitstellungsverlauf für diese Website, in derselben Gruppe Environment.
  • Buildpack, die erkannte Build-Strategie, bei Node.js-Websites, in der Gruppe Apps.

Die Seite Git Deploy beschreibt sich selbst unmissverständlich: Verbinden Sie ein Repository, und jeder Push auf Ihren konfigurierten Branch löst einen Build und ein Deployment aus.

Die Git-Deploy-Seite für eine Website in KPanel, auf der ein Repository verbunden ist

Ein Repository Verbinden

  1. Wählen Sie Ihren Provider: GitHub, GitLab oder Bitbucket.
  2. Geben Sie die Repository-URL ein. Die SSH-Form ist die gewünschte, zum Beispiel git@github.com:user/repo.git.
  3. Legen Sie den Branch fest, von dem aus bereitgestellt werden soll. Das Feld beginnt bei main.
  4. Optional können Sie einen Build-Befehl festlegen, zum Beispiel npm run build.
  5. Optional können Sie ein Ausgabeverzeichnis festlegen, zum Beispiel dist, public oder . für ein Repository, das bereits gebaut ist.
  6. Klicken Sie auf Repository verbinden.

Lassen Sie Build-Befehl und Ausgabeverzeichnis leer, wenn Ihr Repository bereits so, wie es ist, bereitstellbar ist, was bei einer einfachen PHP- oder statischen Website der Regelfall ist.

Erweiterte Skripte

Durch Aufklappen von Erweitert erscheinen zwei zusätzliche Felder:

  • Pre-Deploy-Skript, das vor dem Build ausgeführt wird.
  • Post-Deploy-Skript, das nach dem Deployment ausgeführt wird.

Nutzen Sie den Post-Deploy-Hook für Dinge, die geschehen müssen, sobald der neue Code vorhanden ist: das Leeren eines Anwendungs-Caches, das Ausführen einer Datenbankmigration, das Neustarten eines Workers.

Automatisches Deployment Bei Push

Der Schalter am unteren Rand der Karte steuert, ob Pushes überhaupt ein Deployment auslösen. Ist er aktiviert, löst jeder Push auf den konfigurierten Branch ein Deployment aus. Ist er deaktiviert, laufen Deployments nur, wenn Sie sie manuell über Jetzt bereitstellen auslösen.

Schalten Sie das automatische Deployment während eines Code-Freezes oder eines Vorfalls lieber ab, statt das Repository zu trennen. Durch das Trennen werden der Deploy-Schlüssel und das Webhook-Secret verworfen, sodass Sie anschließend beide Schritte auf Repository-Seite erneut durchführen müssen.

Das Setup In Ihrem Repository Abschliessen

Das Verbinden des Repositorys in KPanel ist nur der erste von drei Schritten. Solange noch kein Deployment gelaufen ist, zeigt die Seite ein Banner mit der Aufschrift Setup abschließen: 2 Schritte verbleibend mit allem, was Sie benötigen.

Schritt 2: Deploy-Schlüssel Hinzufügen

KapsuleHost benötigt Lesezugriff, um Ihr Repository zu klonen. Das Banner zeigt einen öffentlichen Schlüssel mit einer Schaltfläche Schlüssel kopieren.

Fügen Sie ihn in die Deploy-Schlüssel Ihres Repositorys ein. Für GitHub bietet das Banner die Abkürzung Zu GitHub hinzufügen direkt zur passenden Einstellungsseite. Lesezugriff genügt, gewähren Sie keinen Schreibzugriff.

Schritt 3: Webhook Hinzufügen

Der Webhook teilt KapsuleHost mit, dass ein Push stattgefunden hat. Das Banner liefert Ihnen drei Werte:

FeldWert
Payload-URLEine URL, die auf /api/git-deploy/webhook/ plus die ID dieser Website endet
SecretEin generiertes Signatur-Secret, verborgen, bis Sie auf das Augensymbol klicken
Content-Typeapplication/json

Kopieren Sie jeden Wert in die Webhook-Einstellungen Ihres Repositorys. Für GitHub gibt es die Abkürzung Webhook zu GitHub hinzufügen. Stellen Sie den Content-Type auf JSON, nicht auf den formularkodierten Standard, sonst lässt sich die Payload nicht parsen.

Behandeln Sie das Webhook-Secret wie ein Passwort. Wer es besitzt, zusammen mit der Payload-URL, kann ein Deployment Ihrer Website auslösen. Beide Werte werden nur Personen angezeigt, die die Website bereits verwalten dürfen, und das Secret bleibt hinter dem Augensymbol verborgen, bis Sie es anfordern.

Manuell Bereitstellen

Klicken Sie auf der Git-Deploy-Seite auf Jetzt bereitstellen, um den aktuellen Stand des konfigurierten Branches zu bauen und bereitzustellen, ohne einen Commit zu pushen. Dies funktioniert unabhängig davon, ob das automatische Deployment aktiviert ist, und macht die Funktion zum richtigen Werkzeug während eines Freezes: Pushes werden ignoriert, aber Sie können den Fix trotzdem ausliefern.

Den Bereitstellungsverlauf Lesen

Öffnen Sie Environment, dann Deployments. Die Seite trägt den Titel Bereitstellungsverlauf und listet jedes durch Webhook oder manuell ausgelöste Deployment auf, neueste zuerst.

Jede Zeile enthält:

  • Ein Statussymbol und die kurze Commit-SHA, mit dem Branch als Pille.
  • Die Commit-Nachricht, oder Manuelles Deployment, falls keine Commit-Nachricht vorhanden war.
  • Den Autor, wie lange es her ist, wie lange es gedauert hat, und was es ausgelöst hat.
  • Eine Status-Pille.

Die Status sind pending, building, deploying, success und failed. Solange etwas läuft, aktualisiert sich die Seite alle fünf Sekunden selbst und zeigt unter der Tabelle den Hinweis Refreshing automatically, sodass Sie sie geöffnet lassen und ein Deployment live mitverfolgen können.

Wenn Ein Deployment Fehlschlägt

Eine fehlgeschlagene Zeile erhält rechts eine Schaltfläche Error. Klicken Sie darauf, um die erfasste Fehlerausgabe inline aufzuklappen, ohne die Seite zu verlassen. Diese Ausgabe ist der eigene Fehlertext des Builds, daher nennt er meist die Datei oder den Befehl, der fehlgeschlagen ist.

Gehen Sie in dieser Reihenfolge vor: Fehler lesen, denselben Build-Befehl lokal reproduzieren, beheben, pushen. Wenn der Build lokal funktioniert, hier aber nicht, liegt der Unterschied fast immer an der Umgebung, etwa einer Abhängigkeit, die auf Ihrem Rechner global installiert ist, oder einer Datei, die sich in Ihrem Arbeitsverzeichnis befindet, aber nicht committet wurde.

Buildpack-Erkennung

Bei Node.js-Websites zeigt die Seite Buildpack in der Gruppe Apps, wie KapsuleHost entschieden hat, Ihre App zu bauen. Die Erkennung läuft über die Dateien im Wurzelverzeichnis Ihres Repositorys, und der erste Treffer gewinnt:

ErkanntAuslöser
Individuelles Buildpackkapsule.config.yaml oder kapsule.config.yml im Wurzelverzeichnis
Dockerfile-BuildpackDockerfile im Wurzelverzeichnis
Node.jspackage.json mit einem start-, build- oder dev-Skript
Pythonrequirements.txt oder pyproject.toml
PHPcomposer.json
Statischindex.html im Wurzelverzeichnis

Trifft nichts zu, meldet die Seite dies und listet die unterstützten Auslöser auf. Fügen Sie ein Dockerfile oder ein kapsule.config.yaml hinzu, um die Kontrolle über den Build ausdrücklich zu übernehmen.

Einen Build Ausführen

Klicken Sie auf Build ausführen, um einen Build einzureihen. Die Seite fragt alle drei Sekunden ab, während ein Lauf aktiv ist, und die Tabelle Letzte Builds zeigt die letzten Läufe mit Startzeit, Typ, Status, Dauer und resultierender Image-Referenz. Klicken Sie auf eine Zeile, um das Ende des Logs zu sehen.

Es kann immer nur ein Build gleichzeitig laufen. Das Auslösen eines zweiten, während einer eingereiht ist oder läuft, wird mit Ein Build ist bereits in Bearbeitung abgelehnt, was Absicht ist: Zwei Builds, die gleichzeitig dieselbe Ausgabe schreiben, sind der Weg zu einer halb bereitgestellten Website.

Trennen

Klicken Sie auf Disconnect und bestätigen Sie. Die Bestätigung ist eindeutig hinsichtlich der Auswirkungen: Die Git-Deploy-Konfiguration und der Deploy-Schlüssel werden entfernt, und Ihre Website-Dateien sind nicht betroffen. Die Website liefert weiterhin das zuletzt bereitgestellte Ergebnis aus.

Räumen Sie anschließend auf, indem Sie den Deploy-Schlüssel und den Webhook in Ihren Repository-Einstellungen löschen. Sie funktionieren danach einfach nicht mehr, aber verwaiste Einträge erschweren die nächste Prüfung.

Fehlerbehebung

Pushes lösen nichts aus. Prüfen Sie zuerst den Schalter für automatisches Deployment, dann den Webhook in Ihrem Repository. Die meisten Anbieter zeigen die letzten Zustellungen und deren Antwortcodes, was Ihnen sofort verrät, ob die Anfrage Ihr Repository überhaupt verlassen hat.

Das Klonen schlägt fehl. Der Deploy-Schlüssel fehlt, wurde mit einem Zeilenumbruch eingefügt oder wurde dem falschen Repository hinzugefügt. Kopieren Sie ihn erneut über die Schaltfläche Schlüssel kopieren, statt den Text von Hand zu markieren.

Das Deployment ist erfolgreich, aber die Website ändert sich nicht. Das Ausgabeverzeichnis ist vermutlich falsch. Wenn Ihr Build nach dist schreibt und das Ausgabeverzeichnis leer ist, erreichen die gebauten Dateien nie die ausgelieferte Wurzel.

Alles zeigt pending und bewegt sich nie. Das Deployment wurde eingereiht, aber nie aufgenommen. Lösen Sie ein manuelles Jetzt bereitstellen aus und prüfen Sie die Seite Deploys auf eine Fehlerzeile.

Wie Es Weitergeht

War das hilfreich?

Sind Sie eine KI? Diese Seite als Markdown lesen

Verwandte Artikel

Verbindung über SFTP: FileZilla, Cyberduck und KommandozeileSFTP (Secure File Transfer Protocol) gibt dir direkten Zugriff auf die Dateien deiner Website auf dem Server.…SSL-Zertifikate und HTTPSDieser Artikel erklärt in einfachen Worten, was SSL ist, wie KapsuleHost SSL für Ihre Websites automatisch verwaltet und was zu tun ist, wenn bei Ihrem…Websites: Wo soll man anfangenWie Website-Hosting bei KapsuleHost funktioniert, was sich auf welchem Tab einer Website befindet, und welche Anleitung für die jeweilige Aufgabe die richtige…Website-Uptime-ÜberwachungJede Website bei KapsuleHost wird automatisch alle 60 Sekunden überprüft, und der Tab Uptime zeigt Ihnen das Ergebnis: aktuellen Status, Uptime-Prozentsatz,…

Kommen Sie nicht weiter?

Fragen Sie Kora, die Ihr Konto kennt, oder wenden Sie sich an unser Team.

KontaktSupport kontaktieren