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 ein GitLab-Projekt
Um loszulegen, gehe zu GitLab und klicke auf Projekt erstellen, um ein neues Repository für deine Kinsta-Site zu erstellen.
Wähle die Option Leeres Projekt und fülle die Felder Projektname und Projekt-Slug aus.
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.
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.
Scrolle nach unten und klicke auf die Schaltfläche SSH-Schlüssel 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.
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.
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.
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.
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.
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:
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.
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.
Nachdem WordPress installiert wurde, solltest du deine neue WordPress-Seite sehen können, indem du deine primäre Domain besuchst.
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).
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.
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.
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.
Ä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.
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.
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.