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.
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 Geheimnisses | Geheimnis |
KINSTA_SERVER_IP | Host z.B. 12.34.56.78 |
KINSTA_USERNAME | Benutzername z.B. kinstahelp |
PASSWORT | Passwort |
PORT | Port z.B. 12345 |
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.
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:
- Gehe zu deinem GitHub-Konto, klicke auf dein Profilbild und wähle dann Einstellungen.
- Klicke auf Entwicklereinstellungen > Persönliche Zugriffstoken > Token (klassisch).
- Klicke auf Neues Token generieren > Neues Token generieren (klassisch) und gib ihm unter Hinweis einen Namen (z.B. „Kinsta Deployment Token“).
- Aktiviere unter Scopes auswählen das Kontrollkästchen repo (für volle Kontrolle über private Repositories).
- 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
namensdeploy
, 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 Zweigmain
in deinem GitHub-Repository.git reset --hard origin/main
: Wendet diese Änderungen an, indem er die Live-Site in dem Verzeichnispublic
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.