GitLab CI/CD

Fortgeschrittene Benutzer können mit GitLab CI/CD (Continuous Integration/Continuous Delivery oder Continuous Deployment) automatisch Codeänderungen auf deiner Kinsta-Site bereitstellen, sobald ein neuer Commit in den entsprechenden Branch gepusht wird. Diese Methode ermöglicht es dir, kontinuierlich Code in deine Live-Umgebung auf Kinsta zu übertragen, ohne die WordPress-MySQL-Datenbank zu überschreiben.

Auf diese Weise kannst du Code von deiner lokalen Umgebung oder deiner Kinsta-Staging-Umgebung aus pushen und hast ein Versionskontrollsystem. Im folgenden Beispiel richten wir eine Staging-Umgebung ein und pushen Änderungen in dieser Umgebung über GitLab in unsere Live-Umgebung (unter Umgehung der Push-to-Live-Funktion von Kinsta).

Wenn du noch kein GitLab-Konto hast, kannst du dich auf der Anmeldeseite von GitLab anmelden.

Eine Kinsta-Webseite erstellen

In diesem Lernprogramm erstellen wir zunächst eine neue leere Webseite auf Kinsta und installieren später WordPress. Wenn du bereits eine Kinsta WordPress Webseite hast, kannst du die Schritte in diesem Tutorial trotzdem befolgen, um deine Webseite mit GitLab zu verbinden.

Gehe in MyKinsta auf die Seite deiner WordPress-Seiten. Klicke auf die Schaltfläche Seite hinzufügen in der oberen rechten Ecke und wähle Neue Seite erstellen aus dem Dropdown-Menü. Wähle im Modal/Pop-up-Fenster die Option Leere Umgebung (ohne WordPress) und klicke auf die Schaltfläche Weiter.

Fülle die erforderlichen Felder aus, klicke auf die Schaltfläche Weiter, um zu den einzelnen Fenstern zu gelangen und die Erstellung der Seite abzuschließen.

Erstelle eine leere Seite in MyKinsta
Erstelle eine leere Seite in MyKinsta

Erstelle ein GitLab-Projekt

Um loszulegen, gehe zu GitLab und klicke auf Projekt erstellen, um ein neues Repository für deine Kinsta-Site zu erstellen.

Erstelle ein Projekt in GitLab
Erstelle ein Projekt in GitLab

Wähle die Option Leeres Projekt und fülle die Felder Projektname und Projekt-Slug aus.

Erstelle ein leeres Projekt in GitLab
Erstelle ein leeres Projekt in GitLab

Für die Option Sichtbarkeitsstufe empfehlen wir, das Repository privat zu machen. Da dieses Projektarchiv möglicherweise Premium-Plugin- und Theme-Code enthält, könnte jeder, der es über das öffentliche Internet zugänglich macht, die Produkte herunterladen, für die du bezahlt hast.

Wenn du mit der Konfiguration des neuen Projekts fertig bist, klicke auf Projekt erstellen, um fortzufahren.

SSH-Schlüssel konfigurieren

Als nächstes musst du SSH-Schlüssel zu GitLab und MyKinsta hinzufügen, damit die beiden Plattformen miteinander kommunizieren können.

Öffentlichen SSH-Schlüssel zu GitLab hinzufügen

Verbinde dich zunächst per SSH mit der Live-Umgebung deiner Kinsta-Webseite und führe den folgenden Befehl cat aus, um deinen öffentlichen SSH-Schlüssel anzuzeigen.

cat ~/.ssh/id_rsa.pub

Dein öffentlicher Schlüssel sollte ähnlich aussehen wie der unten abgebildete. Lass dein Kommandozeilenfenster vorerst geöffnet und gehe in deinem Webbrowser zurück zu GitLab.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7zdjwd6UIUJ5t4YnXNi6yhdHgrvIV2xgjvJ3592wd1Hzmnta4dau7yOIxQDU7/oNIr6DIskuIUii5ruGi4YZpIwB/AWGrn/uWb+FXJFiQHMZq9rCFcqtZXT0fyzKiSNkblV4F1RaPQJRvxfSUsSQ3jJU3FX8CF1c4R40CiBKkSHM8uavVIIESzgIHRiWVxkL9F6SKzg8GeTctJaAa3W+q1F1T60OKYmzH3OLdA37ZNmkm1CYWa8SF0JjOszxOnPwhfQ49P5r+rftXRFLz/7hGJ8CnUyzErSiUdUKNknUAB+w4KEZshQSNuiken0+GKqIw83dWWSyjiJJigcyDez2s+3AqDLHPG45NoBEXuBXjPQ9C08hokVyKlbzd/P2qvcnzUT5S6zTuaYOW+50+fiXeYkJlEoYYxoGRVx6FFdFqWyJx5UyaDv7QY3iQH0qct1iq9XGXMhBxIecIAEPUwF8nOp15in8L+5UIFMiNnihztTAXysc+8xvVwbuRlQIeR/E= ansible-generated on fvj-kinstagit

Klicke auf das Dropdown-Menü des Benutzersymbols in der oberen rechten Ecke von GitLab und dann auf Einstellungen.

Auf der Einstellungsseite klickst du in der Seitenleiste auf SSH-Schlüssel.

Klicke auf Neuen Schlüssel hinzufügen und füge deinen öffentlichen SSH-Schlüssel in das Feld Schlüssel ein. In das Feld Titel wird automatisch ein Name eingefügt, den du aber bei Bedarf ändern kannst. In GitLab kannst du auch ein Ablaufdatum für den SSH-Schlüssel festlegen. Diese Option ist nützlich, wenn du SSH-Schlüssel als Teil des Sicherheitsprotokolls deiner Infrastruktur ungültig machst und rotierst. Wenn du das nicht tust, kannst du das Feld Ablaufdatum leer lassen.

Füge deinen SSH-Schlüssel in GitLab hinzu
Füge deinen SSH-Schlüssel in GitLab hinzu

Nachdem du deine Konfiguration überprüft hast, klicke auf Schlüssel hinzufügen, um den Vorgang abzuschließen.

Öffentlichen SSH-Schlüssel zu MyKinsta hinzufügen

Nachdem du deinen öffentlichen SSH-Schlüssel in GitLab hinzugefügt hast, musst du denselben Schlüssel auch zu MyKinsta hinzufügen. Mit diesem Schritt wird dein öffentlicher SSH-Schlüssel zur authorized_keys-Datei deiner Webseite hinzugefügt (nur für root und MyKinsta beschreibbar) und ermöglicht es GitLab, per SSH auf deine Webseite zuzugreifen, um Codeänderungen zu verteilen. In MyKinsta klickst du oben rechts auf deinen Namen und wählst im Dropdown-Menü Benutzereinstellungen.

MyKinsta-Benutzereinstellungen.
MyKinsta-Benutzereinstellungen.

Scrolle nach unten und klicke auf die Schaltfläche SSH-Schlüssel hinzufügen.

SSH-Schlüssel in MyKinsta hinzufügen.
SSH-Schlüssel in MyKinsta hinzufügen.

Gib im Modal-/Pop-up-Fenster ein Label (Name) für den SSH-Schlüssel an, füge deinen öffentlichen Schlüssel in das SSH-Schlüsselfeld ein und klicke auf SSH-Schlüssel hinzufügen, um den Vorgang abzuschließen.

Füge deinen SSH-Schlüssel in MyKinsta hinzu
Füge deinen SSH-Schlüssel in MyKinsta hinzu

SSH-Schlüssel zu GitLab hinzufügen

Als Nächstes musst du den privaten SSH-Schlüssel aus der Live-Umgebung deiner Webseite als Umgebungsvariable in GitLab hinzufügen.

Um deinen privaten Schlüssel zu finden, wechselst du zurück in dein Kommandozeilenfenster und führst den folgenden Befehl aus. Achte darauf, dass du deinen privaten SSH-Schlüssel nicht außerhalb von GitLab weitergibst.

cat ~/.ssh/id_rsa

In GitLab klickst du auf das Projekt, das du zuvor erstellt hast. Bewege den Mauszeiger in der Seitenleiste auf Einstellungen und klicke im angezeigten Menü auf CI/CD.

GitLab Repository CI/CD Einstellungen
GitLab Repository CI/CD Einstellungen

Scrolle nach unten zum Abschnitt Variablen, klicke auf die Schaltfläche Erweitern und dann auf Variable hinzufügen. Verwende SSH_PRIVATE_KEY für den Schlüsselnamen, füge deinen privaten Schlüssel in das Feld Wert ein und klicke dann auf die Schaltfläche Variable hinzufügen, um fortzufahren.

Nachdem du die Variable hinzugefügt hast, kannst du sie in den Einstellungen deines Repositorys sehen.

SSH-Schlüssel-Variable in GitLab
SSH-Schlüssel-Variable in GitLab

GitLab Repo auf MyKinsta klonen

Nachdem du nun die notwendigen SSH-Schlüssel hinzugefügt hast, kannst du dein GitLab-Repository in deine Kinsta-Live-Umgebung klonen. Navigiere in GitLab zu deinem Repository, klicke auf die blaue Schaltfläche Klonen und dann auf das Symbol Kopieren/Zwischenablage, um die Adresse des Repositorys unter Klonen mit SSH zu kopieren.

Klonen mit SSH in GitLab
Klonen mit SSH in GitLab

Wechsle zurück in dein Kommandozeilenfenster und navigiere zum Home-Verzeichnis deiner Live-Umgebung. Wenn du dir nicht sicher bist, wie du zu deinem Home-Verzeichnis kommst, benutze den folgenden Befehl.

cd ~/

Sobald du im Home-Verzeichnis bist, führe den Befehl git clone mit der Repository-Adresse aus, die du von GitLab kopiert hast.

git clone [your-repository-url-here]

Nachdem du das Projektarchiv geklont hast, wirst du eine Warnung erhalten: „Du scheinst ein leeres Projektarchiv geklont zu haben.“ Das ist zu erwarten, da das Projektarchiv im Moment leer ist.

Klone dein GitLab-Repository in deine Kinsta-Live-Umgebung
Klone dein GitLab-Repository in deine Kinsta-Live-Umgebung

Bei Kinsta stellt unsere Nginx-Konfiguration Inhalte aus dem Ordner ~/public bereit. Daher musst du den aktuellen Ordner ~/public löschen und deinen geklonten Repository-Ordner in ~/public umbenennen. Dazu führst du die beiden folgenden Befehle aus.

rm -rf ~/public
mv ~/your-repo-folder-name ~/public

GitLab Repo konfigurieren

Benutze den folgenden Befehl, um zum Ordner ~/public zu navigieren.

cd ~/public

Führe die beiden folgenden Befehle aus, um dein GitLab Repo zu konfigurieren. Achte darauf, dass du eine gültige E-Mail-Adresse und einen Benutzernamen angibst, der mit deinem GitLab-Konto verknüpft ist.

git config --global user.email "[email protected]"
git config --global user.name "brian"

Installiere WordPress mit WP-CLI

Nachdem das GitLab-Repository in deine Kinsta-Live-Umgebung geklont und konfiguriert wurde, können wir nun WordPress installieren. Du kannst WordPress manuell installieren, indem du es von wordpress.org herunterlädst, oder du kannst es mit WP-CLI installieren. In diesem Beispiel verwenden wir WP-CLI, um WordPress mit dem folgenden Befehl im Ordner ~/public zu installieren.

wp core download

Nach der Installation von WordPress sollte dein ~/public-Ordner wie folgt aussehen:

Eine frische WordPress-Installation mit WordPress-Kerndateien und -Verzeichnissen
Eine frische WordPress-Installation mit WordPress-Kerndateien und -Verzeichnissen

Als Nächstes gehst du in MyKinsta auf die Seite Domains deiner Webseite und klickst auf den Link URL öffnen, um deine primäre Domain zu besuchen.

Öffne den URL-Link in MyKinsta.
Öffne den URL-Link in MyKinsta.

Du wirst mit dem fünfminütigen Installationsprozess von WordPress begrüßt. Wenn du dir bei der Einrichtung von WordPress unsicher bist, findest du hier eine ausführliche Anleitung.

Konfiguriere die neue Installation von WordPress
Konfiguriere die neue Installation von WordPress

Nachdem WordPress installiert wurde, solltest du deine neue WordPress-Seite sehen können, indem du deine primäre Domain besuchst.

Eine neue WordPress-Installation
Eine neue WordPress-Installation

Konfiguriere die GitLab CI/CD Pipeline

Als Nächstes musst du eine Konfigurationsdatei einrichten, die GitLab anweist, automatische Verteilungen zu initiieren, nachdem der Hauptzweig des Repos aktualisiert wurde. Vergewissere dich dazu, dass du dich im Ordner ~/public in deiner Kinsta-Live-Umgebung befindest (führe cd ~/public aus, um dorthin zu navigieren) und erstelle mit dem folgenden Befehl eine neue Datei namens .gitlab-ci.yml.

touch .gitlab-ci.yml

Nachdem du die Datei erstellt hast, füge den folgenden Text in die Datei ein. Du kannst die Datei entweder mit nano oder vim in der Kommandozeile oder mit SFTP und einem Text- oder Code-Editor bearbeiten. Wenn du einen SFTP-Client verwendest, achte darauf, dass du versteckte Dateien aktivierst, damit du die Datei .gitlab-ci.yml sehen kannst.

before_script:
    - apt-get update -qq
    - apt-get install -qq git
    # Setup SSH deploy keys
    - 'which ssh-agent || ( apt-get install -qq openssh-client )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking none" > ~/.ssh/config'
    - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
deploy_live:
    environment:
        name: Live
        url: your-primary-domain script:
        - ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin main && exit"
    only:
        - main

Ändere die Parameter url und script im Block deploy_live. Ersetze die fettgedruckten Werte durch die Angaben zu deiner Webseite in MyKinsta.

  • Ersetze your-primary-domain durch die primäre Domain deiner Webseite.
  • Ersetze ssh user@ip-address -p port-number durch den SSH-Terminalbefehl in MyKinsta (WordPress-Seiten >Seitenname > Info > SFTP/SSH).
  • Ersetze public-root durch den Pfad in MyKinsta (WordPress Seiten > seitenname > Info > Details zur Umgebung).
Öffentlicher Pfad und SSH-Details in MyKinsta
Öffentlicher Pfad und SSH-Details in MyKinsta

Der Abschnitt only: - main der Datei verweist auf den Repository-Zweig, der den CI/CD-Prozess von GitLab auslösen wird. Mit dieser Konfiguration wird ein Push in den Hauptzweig ein Deployment in deiner Kinsta-Live-Umgebung auslösen. Wenn du einen anderen Zweig als Auslöser für die Bereitstellung angeben möchtest, kannst du die Konfiguration ändern.

Wenn du die Konfiguration noch genauer gestalten möchtest, um eine Staging-Umgebung zu berücksichtigen, kannst du einen zusätzlichen deploy_staging Block mit der URL und den SSH-Details für deine Kinsta Staging-Umgebung hinzufügen.

deploy_staging:
    environment:
        name: Staging
        url: your-staging-domain script:
        - ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin staging && exit"
    only:
        - staging

Beachte auch den Abschnitt only: - staging – das bedeutet, dass ein Push in den Zweig staging den CI/CD-Prozess von GitLab auslöst. Du kannst dies nach Bedarf anpassen, um von einem Zweig deiner Wahl zu deployen.

Erster Commit an GitLab

Jetzt, da WordPress und die GitLab-Konfigurationsdatei eingerichtet sind, können wir einen ersten Commit an GitLab vornehmen. Wir erstellen einen neuen Zweig mit dem Namen v0.1, beginnen mit der Verfolgung der Dateien im Repo, übertragen die Änderungen und pushen die Änderungen im v0.1-Zweig an GitLab. Führe die folgenden Befehle von ~/public aus, um den ersten Commit auszulösen.

git checkout -b v0.1
git add .
git commit -a -m 'Initial Commit'
git push origin v0.1

Wenn du dein Projektarchiv in GitLab überprüfst, siehst du jetzt die Dateien deiner ersten Übertragung.

Initialer Commit an GitLab
Initialer Commit an GitLab

Kinsta Staging-Umgebung konfigurieren

Im nächsten Schritt erstellst und konfigurierst du eine Staging-Umgebung in MyKinsta, damit du einen sicheren Ort hast, um neue Plugins, Themes und Code zu testen, ohne deine Live-/Produktionsumgebung zu beeinträchtigen.

Erstellen einer neuen Kinsta-Staging-Umgebung in MyKinsta.
Erstellen einer neuen Kinsta-Staging-Umgebung in MyKinsta.

Nachdem du die Staging-Umgebung für deine Webseite erstellt hast, logge dich per SSH in einem neuen Kommandozeilenfenster in die Staging-Umgebung ein (lass das separate Fenster für deine Live-Umgebung geöffnet) und führe den unten stehenden Befehl aus, um zu prüfen, ob es Änderungen am Code gibt.

cd ~/public && git status

Du solltest eine Meldung wie die folgende sehen. Wie du siehst, handelt es sich um den Zweig v0.1, der zuvor erstellt wurde. Außerdem hat sich die Datei wp-config.php geändert. Das liegt daran, dass Kinsta bei der Erstellung der Staging-Umgebung ein paar zusätzliche Zeilen in die wp-config.php einfügt.

Geänderte Dateien in der Kinsta Staging-Umgebung
Geänderte Dateien in der Kinsta Staging-Umgebung

Änderungen festschreiben und in die Live-Umgebung übertragen

Zum Schluss nehmen wir einige Änderungen in der Staging-Umgebung vor und übertragen sie mit GitLab in die Kinsta-Live-Umgebung. Denke daran, dass diese Methode die Push-to-Live-Funktion von Kinsta umgeht.

Für dieses Beispiel installieren wir das Yoast SEO Plugin mit WP-CLI und dem folgenden Befehl.

wp plugin install wordpress-seo

Nachdem das Yoast SEO-Plugin installiert wurde, führe die folgenden Befehle aus, um die Änderungen in den v0.1-Zweig zu übertragen.

git add .
git commit -a -m ‘Installed Yoast SEO plugin.’
git push origin v0.1

Zum Schluss wechseln wir in den Hauptzweig, führen v0.1 mit main zusammen und pushen main mit den unten stehenden Befehlen an GitLab. Dadurch wird GitLab aufgrund der Einstellung only: - main in der GitLab-Konfigurationsdatei einen Deployment-Prozess in deiner Kinsta-Live-Umgebung einleiten.

git checkout main
git merge v0.1
git push origin main

In GitLab gehst du in der Seitenleiste deines Repos auf CI/CD > Jobs und siehst, dass der Job läuft. Dieser Job ist GitLab, das das Yoast SEO-Plugin in deiner Kinsta-Live-Umgebung bereitstellt.

Aktiver Job in GitLab
Aktiver Job in GitLab

Nachdem der Job beendet ist, wechselst du zurück in das Kommandozeilenfenster deiner Live-Umgebung und rufst dort wp plugin list auf. Du solltest wordpress-seo in der Liste sehen. Dies ist das Yoast SEO-Plugin, das zuvor in der Staging-Umgebung installiert wurde.

Das Yoast SEO-Plugin wurde über GitLab bereitgestellt
Das Yoast SEO-Plugin wurde über GitLab bereitgestellt

Wenn du ein Theme- oder Plugin-Entwickler bist, der mit Kinsta-Webseiten arbeitet, kann die Einrichtung von automatischen Deploys über GitLab CI/CD deinen Arbeitsablauf beschleunigen und gleichzeitig Versionskontrolle bieten.

War dieser Artikel hilfreich?