GitHub CI/CD

Fortgeschrittene Nutzer können mit GitHub CI/CD (Continuous Integration/Continuous Delivery oder Continuous Deployment) automatisch Codeänderungen auf deiner Kinsta-Website bereitstellen, sobald ein neuer Commit in den entsprechenden Branch gepusht wird. Diese Einrichtung ermöglicht eine nahtlose Bereitstellung des Codes von deiner lokalen Umgebung aus über SSH und GitHub-Aktionen, sodass du deine Website kontinuierlich aktualisieren kannst.

Um diese Schritte zu befolgen, musst du eine bestehende Website auf Kinsta hosten und ein GitHub-Konto haben.

1. Lade ein Backup deiner Website herunter

Du kannst ein Backup deiner Website herunterladen, um das GitHub-Repository einzurichten und lokal daran zu arbeiten. Alternativ kannst du auch DevKinsta verwenden, um deine Website vom Kinsta-Server zu holen und lokal zu bearbeiten.

Gehe in MyKinsta auf WordPress Websites > seitenname > Backups > Download > Backup jetzt erstellen.

Erstelle ein herunterladbares Backup in MyKinsta
Erstelle ein herunterladbares Backup in MyKinsta

Wenn dein Backup fertig ist, klicke auf Download, speichere es auf deinem lokalen Computer und entpacke die Dateien in einen Ordner.

2. Richte das GitHub-Repository ein

Öffne den Ordner mit den Dateien deiner Website in deinem bevorzugten Code-Editor. Um zu verhindern, dass unnötige WordPress-Kerndateien, Medien-Uploads oder sensible Informationen hochgeladen werden, füge eine .gitignore-Datei in das Stammverzeichnis deines Projekts ein. Du kannst eine WordPress-Standardvorlage für .gitignore verwenden, ihren Inhalt kopieren und sie speichern, um sicherzustellen, dass nur die wichtigsten Dateien verfolgt werden.

Erstelle ein GitHub-Repository und schiebe die Dateien deiner Website auf GitHub.

3. GitHub-Geheimnisse für Kinsta einrichten

Um die Bereitstellung von GitHub auf Kinsta zu automatisieren, brauchst du wichtige SSH-Daten, darunter deinen Benutzernamen, dein Passwort, deinen Port und deine IP-Adresse. Da diese Daten sensibel sind, musst du sie sicher als GitHub Secrets speichern.

Gehe in GitHub zu deinem Repository und klicke auf Einstellungen > Geheimnisse und Variablen > Aktionen > Neues Repository-Geheimnis.

Füge die folgenden Secrets mit den SFTP/SSH-Details von der Info-Seite deiner Website in MyKinsta hinzu:

Name des GeheimnissesGeheimnis
KINSTA_SERVER_IPHost z.B. 12.34.56.78
KINSTA_USERNAMEBenutzername z.B. kinstahelp
PASSWORTPasswort
PORTPort z.B. 12345
SSH-Informationen, um Geheimnisse zu GitHub hinzuzufügen
SSH-Informationen, um Geheimnisse zu GitHub hinzuzufügen

4. Ein Bare Git Repository auf Kinsta erstellen

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

Öffne ein neues Terminal und logge dich mit dem SSH-Terminalbefehl von der Info-Seite deiner Website in MyKinsta in deinen Kinsta-Server ein.

SSH-Terminal-Befehl für deine Website
SSH-Terminal-Befehl für deine Website

Gib das Passwort deiner Website auf der Info-Seite in MyKinsta ein und kopiere dann den Pfad aus den Umgebungsdetails.

Navigiere zu dem privaten Ordner auf deinem Server, indem du public durch private und your-site durch den Ordnernamen aus dem Pfad deiner Website ersetzst:

cd /www/your-site/private

Wenn der private Ordner nicht existiert, kannst du ihn mit dem folgenden Befehl erstellen:

mkdir -p /www/your-site/private

Erstelle das bloße Git-Repository mit dem folgenden Befehl, indem du your-repo.git durch den Namen deines GitHub-Repositorys ersetzt:

git init --bare your-repo.git

5. Einrichten des Post-Receive-Hooks

Der post-receive Hook stellt den Code automatisch auf deiner Live-Site bereit, sobald neue Änderungen in den main Branch auf GitHub gepusht werden.

Navigiere zum Verzeichnis hooks in deinem Git-Repository und ersetze your-site durch den Namen des Ordners deiner Website und your-repo durch den Namen deines GitHub-Repositorys:

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

Erstelle und bearbeite den Hook post-receive:

nano post-receive

Füge das folgende Skript in die Datei post-receive ein. Damit wird der neueste Code in das Verzeichnis public deiner Live-Site ausgecheckt:

#!/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 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, und die Variable GIT_DIR zeigt auf das Git-Repository.

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

Mach das Skript ausführbar, damit es nach jedem Push automatisch ausgeführt werden kann:

chmod +x post-receive

6. Erstelle und füge ein persönliches GitHub-Zugangs-Token (PAT) hinzu

Wenn du Code über SSH an GitHub sendest, musst du dich mit einem PAT authentifizieren. Mit diesem Token kann GitHub deine Pushes sicher annehmen.

So erstellst du das PAT:

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

Führe den folgenden Befehl aus, um dein GitHub-Repository als Remote hinzuzufügen. Ersetze dabei your-username durch deinen GitHub-Benutzernamen, YOUR_PERSONAL_ACCESS_TOKEN durch das soeben generierte PAT und your-repo durch den Namen deines GitHub-Repositorys:

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

7. Erstelle den GitHub Actions Workflow

Dieser Workflow stellt Änderungen automatisch auf Kinsta bereit, wenn du einen Push auf den Zweig main durchführst. Um die Bereitstellung zu automatisieren, musst du in einer YAML-Datei festlegen, wie die Bereitstellung erfolgen soll.

Erstelle in deinem GitHub-Repository ein neues Verzeichnis mit dem Namen .github/workflows. Erstelle darin eine neue Datei mit dem Namen deploy.yml und füge den folgenden Inhalt in die Datei ein. Ersetze dabei your-site durch den Ordnernamen aus dem Pfad auf deiner Kinsta-Website und your-repo durch den Namen deines GitHub-Repositorys:

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

Dieser Workflow macht Folgendes:

  • Auslösen: 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: Hier wird die Aktion actions/checkout@v2 verwendet, um den neuesten Code aus deinem GitHub-Repository zu ziehen.
  • Deploy to Kinsta via SSH: appleboy/ssh-action wird verwendet, um eine sichere Verbindung zu deinem Kinsta-Server via 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 bloßen 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.

8. Teste den Workflow

Sobald du den Workflow eingerichtet hast, kannst du ihn testen, indem du eine kleine Änderung in den main Branch deines GitHub-Repositorys überträ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 deines Deployments 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.

War dieser Artikel hilfreich?