Continuous Deployment ist ein wesentlicher Bestandteil der modernen Webentwicklung. Es ermöglicht Entwicklern, Änderungen automatisch aus einem Versionskontrollsystem in eine Live-Umgebung zu übertragen. Dieser Ansatz reduziert manuelle Fehler, beschleunigt den Entwicklungsprozess und stellt sicher, dass deine Website immer auf dem neuesten Stand ist.

Als Kinsta-Nutzer kannst du mit SSH Änderungen direkt auf deinen Server übertragen. Mit GitHub Actions kannst du den gesamten Bereitstellungsprozess automatisieren und Aktualisierungen nahtlos auf deine Live-Site übertragen.

Dieser Artikel zeigt dir, wie du mit GitHub Actions eine kontinuierliche Bereitstellung für deine auf Kinsta gehostete WordPress-Website einrichtest. Wir gehen auf alles ein, von der Einrichtung deiner lokalen Umgebung bis zum Pushen von Änderungen auf GitHub und der automatischen Bereitstellung auf deiner Live-Site.

Voraussetzungen

Bevor du das Continuous Deployment für deine WordPress-Website auf Kinsta einrichten kannst, brauchst du ein paar Dinge:

  1. Deine WordPress-Website muss bereits auf Kinsta gehostet sein.
  2. Du musst deine Website lokal ziehen. Du kannst entweder DevKinsta verwenden oder ein Backup herunterladen.
  3. Ein GitHub-Repository, um den Code deiner Website zu speichern und zu pushen.
  4. Grundlegende Git-Kenntnisse, wie z.B. das Pushen von Code und die Verwendung einer .gitignore Datei.

Lokales Pulling deiner Website und Einrichten von GitHub

Als Kinsta-Nutzer kannst du mit DevKinsta am einfachsten auf die lokalen Dateien deiner WordPress-Website zugreifen. Mit nur wenigen Klicks kannst du deine Website vom Kinsta-Server in DevKinsta ziehen und so lokal an deiner Website arbeiten.

Um dies zu tun:

  1. Öffne DevKinsta und klicke auf Website hinzufügen.
  2. Wähle die Option Von Kinsta importieren. Dadurch werden alle Daten deiner Website heruntergeladen, so dass du für die Entwicklung lokal auf sie zugreifen kannst.

Sobald deine Website lokal verfügbar ist, öffne den Ordner der Website in deinem bevorzugten Code-Editor. Bevor du die Dateien auf GitHub hochlädst, füge eine .gitignore Datei in das Stammverzeichnis deines Projekts ein, um zu vermeiden, dass unnötige WordPress-Kerndateien, Uploads oder sensible Informationen hochgeladen werden. Du kannst eine Standardvorlage .gitignore für WordPress verwenden. Kopiere den Inhalt der Vorlage und speichere sie.

Als Nächstes erstellst du ein GitHub-Repository und überträgst die Dateien deiner Website auf GitHub.

GitHub-Geheimnisse für Kinsta einrichten

Um die Bereitstellung von GitHub zu Kinsta zu automatisieren, brauchst du einige wichtige SSH-Daten, darunter deinen Benutzernamen, dein Passwort, den Port und die IP-Adresse. Da diese Daten sensibel sind, solltest du sie als GitHub-Geheimnisse speichern.

Um Geheimnisse in GitHub hinzuzufügen:

  1. Gehe zu deinem Repository auf GitHub.
  2. Klicke auf Einstellungen > Geheimnisse und Variablen > Aktionen > Neues Repository-Geheimnis.
  3. Füge die folgenden Secrets hinzu:
    • KINSTA_SERVER_IP
    • KINSTA_USERNAME
    • PASSWORD
    • PORT

Du findest diese Details auf der Info-Seite deiner Seite in deinem MyKinsta-Dashboard.

SFTP/SSH-Details in MyKinsta
SFTP/SSH-Details in MyKinsta

Nach dieser Einrichtung kannst du nun die automatische Bereitstellung für deine WordPress-Website konfigurieren.

Konfigurieren deines Kinsta-Servers

Bevor du den Bereitstellungs-Prozess mit GitHub Actions automatisieren kannst, musst du deinen Kinsta-Server so konfigurieren, dass er Code von deinem GitHub-Repository empfängt und verteilt.

Dazu sind zwei Schritte nötig: Du musst ein Git-Repository auf deinem Kinsta-Server anlegen und einen post-receive -Hook einrichten, um die neuesten Änderungen automatisch auf deiner Live-Site zu verteilen.

1. Ein Bare Git Repository auf Kinsta erstellen

Ein Bare Git Repository ist ein entferntes Ziel, an das GitHub deinen Code pushen wird. Dieses Repository hat kein Arbeitsverzeichnis – es ist ein zentrales Repository, das deinen Code empfängt und speichert.

Verbinde dich dazu zunächst per SSH mit deinem Kinsta-Server, indem du den SSH-Terminalbefehl in deinem MyKinsta-Dashboard verwendest:

SSH-Terminalbefehl MyKinsta
SSH-Terminalbefehl MyKinsta

Navigiere dann zu dem privaten Ordner auf deinem Server (oder erstelle ihn, wenn er noch nicht existiert):

mkdir -p /www/your-site/private
cd /www/your-site/private

Ersetze hier your-site durch den tatsächlichen Ordnernamen für deine Website, den du im Pfad auf deinem Dashboard findest.

Kinsta live site path
Kinsta live site path.

Zum Schluss erstellst du das reine Git-Repository:

git init --bare your-repo.git

Für your-repo kannst du aus Gründen der Konsistenz den Namen deines GitHub-Repositorys verwenden, aber du kannst es nach Belieben benennen.

Dieses Bare Repository wird den von GitHub gepushten Code erhalten.

2. Einrichten des Post-Receive-Hooks

Sobald dein Git-Repository fertig ist, musst du einen post-receive Hook einrichten. Dieses Skript wird den Code automatisch auf deiner Live-Site bereitstellen, sobald neue Änderungen in den main Branch auf GitHub gepusht werden.

Wechsle dazu in das Verzeichnis hooks in deinem Bare-Git-Repository:

cd /www/your-site/private/your-repo.git/hooks

Erstelle und bearbeite den Hook post-receive:

nano post-receive

Als Nächstes fügst du das folgende Skript in die Datei post-receive ein. Dieses Skript checkt den neuesten Code in das Verzeichnis public deiner Live-Site aus:

#!/bin/bash
TARGET="/www/your-site/public"
GIT_DIR="/www/your-site/private/your-repo.git"

while read oldrev newrev ref
do
    BRANCH=$(git rev-parse --symbolic --abbrev-ref $ref)

    if [[ $BRANCH == "main" ]];
    then
        echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
        git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
    else
        echo "Ref $ref received. Doing nothing: only the main branch may be deployed on this server."
    fi
done

Das obige Skript setzt nur den Code aus dem main -Zweig ein. Die Variable TARGET zeigt auf das Verzeichnis, in dem sich die Dateien deiner Live-Site befinden (/www/your-site/public). Die Variable GIT_DIR verweist auf das reine Git-Repository.

Speichere und beende die Datei, indem du Strg + X, dann Y und Enter drückst.

Zum Schluss musst du das Skript ausführbar machen, damit es nach jedem Push automatisch ausgeführt wird:

chmod +x post-receive

Jetzt ist der post-receive Hook bereit, um den Code automatisch zu verteilen, wenn Änderungen in den main Branch in deinem GitHub-Repository gepusht werden.

3. Erstelle ein GitHub Personal Access Token (PAT) und füge es hinzu

Da GitHub keine passwortbasierte Authentifizierung mehr unterstützt, musst du dich mit einem PAT authentifizieren, wenn du Code über SSH an GitHub sendest. Mit diesem Token kann GitHub deine Pushes sicher akzeptieren.

So erzeugst du den Token:

  1. Gehe zu deinem GitHub-Konto, klicke auf dein Profilbild und wähle dann Einstellungen.
  2. Klicke in der linken Seitenleiste auf Entwicklereinstellungen.
  3. Klicke auf Persönliche Zugangstoken > Token (klassisch).
  4. Klicke auf Neues Token generieren und gib ihm einen Namen (z.B. „Kinsta Deployment Token“).
  5. Aktiviere unter Geltungsbereiche auswählen die Option repo (für volle Kontrolle über private Repositories).
  6. Klicke auf Token generieren und kopiere das Token. (Du wirst es nicht mehr sehen können.)

Als Nächstes führst du den folgenden Befehl aus, um dein GitHub-Repository als Remote hinzuzufügen, wobei du die Platzhalter durch deine tatsächlichen Angaben ersetzt:

git remote add origin https://your-username:[email protected]/your-username/your-repo.git

Ersetze:

  • your-username durch deinen GitHub-Benutzernamen.
  • YOUR_PERSONAL_ACCESS_TOKEN mit dem Token, den du gerade erzeugt hast.
  • your-repo durch den Namen deines GitHub-Repositorys.

Erstellen des GitHub-Aktions-Workflows für die automatische Bereitstellung

Jetzt, wo deine WordPress-Website auf deinem lokalen Rechner liegt, zu GitHub gepusht wurde und du die notwendigen GitHub Secrets eingerichtet hast, ist es an der Zeit, einen GitHub Actions Workflow zu erstellen. Dieser Workflow stellt die Änderungen automatisch auf Kinsta bereit, sobald du einen Push auf den main Branch durchführst.

Um die Bereitstellung zu automatisieren, erstellst du eine YAML-Datei, die festlegt, wie die Bereitstellung erfolgen soll. Hier erfährst du, wie du sie einrichtest:

  1. Erstelle ein neues Verzeichnis namens .github/workflows in deinem GitHub-Repository.
  2. Erstelle in diesem Verzeichnis eine neue Datei namens deploy.yml.
  3. Füge den folgenden Inhalt in die Datei deploy.yml ein:
name: Deploy to Kinsta

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Deploy to Kinsta via SSH
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.KINSTA_SERVER_IP }}
          username: ${{ secrets.KINSTA_USERNAME }}
          password: ${{ secrets.PASSWORD }}
          port: ${{ secrets.PORT }}
          script: |
            cd /www/your-site/private/your-repo.git  # Navigate to the bare Git repository on Kinsta
            git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git fetch origin main  # Fetch the latest changes from GitHub
            git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git reset --hard origin/main  # Deploy changes to the live site

Ein genauerer Blick auf diesen Arbeitsablauf

Hier ist eine Aufschlüsselung des Arbeitsablaufs:

  • Auslöser: Der Workflow wird jedes Mal ausgelöst, wenn Code in den main Branch deines GitHub-Repositorys gepusht wird.
  • Jobs: Der Workflow enthält einen job namens deploy, der auf einer virtuellen Ubuntu-Maschine (ubuntu-latest) läuft.
  • Code auschecken: Dieser Schritt nutzt die Aktion actions/checkout@v2, um den neuesten Code aus deinem GitHub-Repository zu ziehen.
  • Bereitstellen über SSH: appleboy/ssh-action wird verwendet, um eine sichere Verbindung zu deinem Kinsta-Server über SSH mit den von dir konfigurierten Geheimnissen (Server-IP, Benutzername, Passwort und Port) herzustellen. Das Skript in diesem Schritt führt die folgenden Befehle aus:
    • cd /www/your-site/private/your-repo.git: Navigiert zum reinen Git-Repository auf deinem Kinsta-Server.
    • git fetch origin main: Holt die neuesten Änderungen aus dem Zweig main in deinem GitHub-Repository.
    • git reset --hard origin/main: Wendet diese Änderungen an, indem er die Live-Site in dem Verzeichnis public aktualisiert, in dem WordPress gehostet wird.

Testen des Workflows

Sobald du den Workflow eingerichtet hast, kannst du ihn testen, indem du eine kleine Änderung in den main Branch deines GitHub-Repositorys einfügst. Jedes Mal, wenn du eine Änderung hochlädst, löst GitHub Actions automatisch die Bereitstellung aus, zieht die neueste Version deines Codes und stellt sie auf deiner Live-Site auf Kinsta bereit.

Du kannst den Status deiner Bereitstellung auf der Registerkarte Actions in deinem GitHub-Repository verfolgen. Wenn der Workflow auf Fehler stößt, siehst du detaillierte Protokolle, die dir bei der Fehlersuche und -behebung helfen.

Zusammenfassung

Indem du mit GitHub Actions ein Continous Deployment für deine WordPress-Website einrichtest, automatisierst du deinen Entwicklungsworkflow und stellst sicher, dass jede Änderung, die du auf GitHub einstellst, automatisch auf deiner Live-Site auf Kinsta bereitgestellt wird.

Außerdem kannst du zusätzliche Arbeitsabläufe in die Pipeline integrieren, z. B. das Testen und Formatieren mit dem Paket @wordpress/scripts.

Was denkst du über diesen Prozess? Gibt es noch etwas, das wir dir erklären sollten, oder sind dir Fehler aufgefallen, während du diesem Leitfaden gefolgt bist? Bitte teile uns deine Fragen oder dein Feedback im Kommentarbereich unten mit!

Joel Olawanle Kinsta

Joel ist Frontend-Entwickler und arbeitet bei Kinsta als Technical Editor. Er ist ein leidenschaftlicher Lehrer mit einer Vorliebe für Open Source und hat über 200 technische Artikel geschrieben, die sich hauptsächlich um JavaScript und seine Frameworks drehen.