För mer avancerade användare kan GitLab CI/CD (kontinuerlig integrering/kontinuerlig leverans eller kontinuerlig distribution) automatiskt distribuera kodändringar till din Kinsta-webbplats när ett nytt genomförande skickas till relevant gren. Med den här metoden kan du skicka kod kontinuerligt till din livemiljö på Kinsta utan att skriva över WordPress MySQL-databasen.

Med den här konfigurationen kan du skicka kod från din lokala miljö eller din iscensättningsmiljö på Kinsta och ha ett versionskontrollsystem. I exemplet nedan ställer vi in en iscensättningsmiljö och skickar ändringar i den miljön till vår livemiljö via GitLab (detta kringgår Kinsta’s Omvandla till Live-funktion).

Om du inte redan har ett GitLab-konto besöker du deras registreringssida för att komma igång.

Skapa en Kinsta-webbplats

För den här handledningen börjar vi med att skapa en ny tom webbplats på Kinsta, vi installerar WordPress senare. Om du redan har en Kinsta WordPress-webbplats kan du ändå följa stegen i den här självstudien för att ansluta din webbplats till GitLab.

I MyKinsta går du till sidan WordPress-webbplatser. Klicka på knappen Lägg till webbplats i det övre högra hörnet och välj Skapa ny webbplats från rullgardinsmenyn. Välj alternativet Installera inte WordPress i modal/ popup-fönstret och klicka på knappen Fortsätt.

Fyll i de begärda fälten, klicka på knappen Fortsätt för att gå vidare till varje fönster och slutför processen för att skapa webbplatsen.

 

Skapa en tom webbplats i MyKinsta.
Skapa en tom webbplats i MyKinsta.

Skapa ett GitLab-projekt

För att komma igång, gå till GitLab och klicka på Skapa ett projekt för att skapa en ny lagringsplats för din Kinsta-webbplats.

Skapa ett projekt i GitLab.
Skapa ett projekt i GitLab.

Välj alternativet Tomt projekt och fyll i fälten Projektnamn och Projekt-slug.

Skapa ett tomt projekt i GitLab.
Skapa ett tomt projekt i GitLab.

När det gäller alternativet Synlighetsnivå rekommenderar vi att du gör lagringsplatsen privat. Eftersom det här förvaret kan innehålla premium-plugins och temakod, kan det vara möjligt för vem som helst att ladda ner de produkter som du har betalat för om du har förvaret tillgängligt via offentligt Internet.

När du är klar med att konfigurera det nya projektet klickar du på Skapa projekt för att fortsätta.

Konfigurera SSH-nycklar

Därefter måste du lägga till SSH-nycklar till GitLab och MyKinsta så att de två plattformarna kan kommunicera.

Lägga till offentlig SSH-nyckel i GitLab

Allra först, SSH in i kinsta-webbplatsens livemiljö. Kör cat-kommandot nedan för att visa din offentliga SSH-nyckel.

cat ~/.ssh/id_rsa.pub

Din offentliga nyckel bör se ut ungefär som den nedan. Håll kommandoradsfönstret öppet för tillfället och gå tillbaka till GitLab i din webbläsare.

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

Klicka på användarikonens rullgardinsmeny i det övre högra hörnet av GitLab och klicka på Inställningar.

Gå till gitLab-inställningssidan.
Gå till gitLab-inställningssidan.

På sidan Inställningar klickar du på SSH-nycklar i sidofältet.

SSH-nycklar i GitLab.
SSH-nycklar i GitLab.

Klistra in din offentliga SSH-nyckel i fältet Nyckel. Fältet Titel ska fyllas i automatiskt med ett namn, men ändra det gärna om du vill. GitLab låter dig även ange ett utgångsdatum för SSH-nyckeln. Det här alternativet är användbart om du ogiltigförklarar och roterar SSH-nycklar som en del av ditt infrastruktursäkerhets-protokoll. Om du inte gör detta kan du lämna fältet Upphör att gälla tomt.

Lägg till din SSH-nyckel i GitLab.
Lägg till din SSH-nyckel i GitLab.

När du har dubbelkontrollat konfigurationen klickar du på Lägg till nyckel för att slutföra processen.

Lägg till offentlig SSH-nyckel i MyKinsta

Nu när din offentliga SSH-nyckel har lagts till i GitLab måste du lägga till samma nyckel i MyKinsta. Det här steget lägger till din offentliga SSH-nyckel i webbplatsens authorized_keys-fil (endast skrivbar av root och MyKinsta) och tillåter GitLab att SSH in i din webbplats för att distribuera kodändringar. I MyKinsta så klickar du på ditt namn i det övre högra hörnet och väljer Användarinställningar från rullgardinsmenyn.

MyKinsta's användarinställningar.
MyKinsta’s användarinställningar.

Scrolla nedåt och klicka på knappen Lägg till SSH-nyckel.

Lägg till SSH-nyckel i MyKinsta.
Lägg till SSH-nyckel i MyKinsta.

I modal-/popup-fönstret anger du en etikett (namn) för SSH-nyckeln, klistrar in din offentliga nyckel i fältet SSH-nyckel och klickar på Lägg till SSH-nyckel för att slutföra processen.

Lägg till din SSH-nyckel i MyKinsta.
Lägg till din SSH-nyckel i MyKinsta.

Lägga till privat SSH-nyckel i GitLab

Efter detta måste du lägga till den privata SSH-nyckeln från webbplatsens livemiljö som en miljövariabel i GitLab.

För att hitta din privata nyckel, gå tillbaka till kommandoradsfönstret och kör kommandot nedan. Se till att inte dela din privata SSH-nyckel någonstans utanför GitLab.

cat ~/.ssh/id_rsa

I GitLab klickar du på det projekt som du skapade tidigare. Håll muspekaren över Inställningar i sidofältet och klicka på CI/CD i menyn som visas.

CI/CD-inställningar för GitLab-lagringsplatsen.
CI/CD-inställningar för GitLab-lagringsplatsen.

Scrolla ned till avsnittet Variabler, klicka på knappen Expandera och klicka på Lägg till variabel. Använd SSH_PRIVATE_KEY som nyckel-namn, klistra in din privata nyckel i fältet Värde och klicka på knappen Lägg till variabel för att fortsätta.

När variabeln har lagts till så kan du se den i lagringsplatsens inställningar.

Privat SSH-nyckelvariabel i GitLab.
Privat SSH-nyckelvariabel i GitLab.

Klona GitLab-lagringsplatsen till MyKinsta

Nu när nödvändiga SSH-nycklar har lagts till kan du klona gitLab-lagringsplatsen till din Kinsta-livemiljö. I GitLab navigerar du till din lagringsplats, klickar på den blåa klonknappen och klickar på ikonen kopiera/klipp ut för att kopiera lagringsplatsens adress under Klona med SSH.

Klona med SSH i GitLab.
Klona med SSH i GitLab.

Byt tillbaka till kommandoradsfönstret och navigera till den aktiva miljöns hemkatalog. Om du är osäker på hur du kommer till din hemkatalog, använd kommandot nedan.

cd ~/

När du är i hemkatalogen kör du kommandot git clone med lagringsplatsadressen som du kopierade från GitLab.

git clone [your-repository-url-here]

När du har klonat lagringsplatsen visas en varning som säger ”du verkar ha klonat ett tomt arkiv”. Detta är väntat eftersom lagringsplatsen är tom för tillfället.

Klona ditt GitLab-arkiv till din Kinsta-livemiljö.
Klona ditt GitLab-arkiv till din Kinsta-livemiljö.

På Kinsta serverar vår Nginx-konfiguration innehåll från ~/public-mappen. Av den anledningen måste du ta bort den aktuella ~/public-mappen och byta namn på den klonade lagringsplatsens mapp till ~/public. För att göra detta, kör de två kommandona nedan.

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

Konfigurera GitLab-lagringsplatsen

Använd sedan kommandot nedan för att navigera till ~/public-mappen.

cd ~/public

Kör de två kommandona nedan för att konfigurera GitLab-lagringsplatsen. Se till att ange din giltiga e-postadress och ett användarnamn som är kopplat till ditt GitLab-konto.

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

Installera WordPress med WP-CLI

Nu när GitLab-lagringsplatsen har klonats till din Kinsta-livemiljö och konfigurerats, låt oss installera WordPress. Du kan installera WordPress manuellt genom att ladda ner det från wordpress.org, eller installera det med WP-CLI. I det här exemplet använder vi WP-CLI för att installera WordPress med kommandot nedan i ~/public-mappen.

wp core download

När du har installerat WordPress bör din ~/public-mapp se ut så här:

En ny WordPress-installation med WordPress-kärnfiler och kataloger.
En ny WordPress-installation med WordPress-kärnfiler och kataloger.

Gå sedan till webbplatsens domänsida i MyKinsta och klicka på länken Öppna webbadress för att besöka din primära domän.

Öppna webbadress-länken i MyKinsta.
Öppna webbadress-länken i MyKinsta.

Du kommer att möta WordPress fem minuter långa installationsprocess. Om du är osäker på hur du konfigurerar WordPress har vi en djupgående guide här.

Konfigurera den nya installationen av WordPress.
Konfigurera den nya installationen av WordPress.

När WordPress har installerats bör du kunna se din nya WordPress-webbplats genom att besöka din primära domän.

En ny WordPress-installation.
En ny WordPress-installation.

Konfigurera GitLab CI/CD-pipeline

Efter detta måste du konfigurera en konfigurationsfil för att instruera GitLab att initiera automatiska distributioner när lagringsplatsens huvudgren har uppdaterats. Du gör detta genom att kontrollera att du är i ~/public-mappen i din Kinsta live-miljö (kör cd ~/public för att navigera dit om det krävs) och skapa en ny fil med namnet .gitlab-ci.yml med kommandot nedan.

touch .gitlab-ci.yml

När filen har skapats lägger du till följande text i filen. Du kan antingen redigera filen med nano eller vim i kommandoraden eller med SFTP och en text- eller kodredigerare. Om du använder en SFTP-klient måste du aktivera dolda filer för att se .gitlab-ci.yml-filen.

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 *\n\tStrictHostKeyChecking 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

Ändra url och  script-parametrarna i deploy_live-blocket; ersätt de fetstilta värdena med webbplatsens information från MyKinsta.

  • Ersätt din primära domän med webbplatsens primära domän.
  • Ersätt ssh user@ip-address -p port-number med SSH-terminalkommandot i MyKinsta (WordPress-webbplatser > webbplatsnamn > Info > SFTP/SSH).
  • Ersätt public-root med sökvägen i MyKinsta (WordPress-webbplatser > webbplatsnamn > Info > Miljö detaljer).
Offentlig sökväg och SSH-information i MyKinsta.
Offentlig sökväg och SSH-information i MyKinsta.

only: - main -sektionen av filen refererar till lagringsplatsgrenen som utlöser GitLabs CI/CD-processen. Med den här konfigurationen initierar omvandlingar till  huvudgrenen en distribution till din Kinsta-livemiljö. Om du vill ange en annan gren som ska utlösa distributionen kan du ändra konfigurationen.

Om du vill ha en ännu mer ingående konfiguration för att ta hänsyn till en iscensättningsmiljö kan du lägga till ytterligare ett deploy_staging -block med webbadress- och SSH-information för din iscensättningsmiljö på Kinsta.

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

Lägg även märke till only: - staging – det betyder att omvandling till staging -grenen kommer att initiera GitLabs CI/CD-processen. Du kan justera detta efter behov för att distribuera från den gren som du väljer.

Inledande åtaganden(commit) med GitLab

Nu när WordPress och GitLab-konfigurationsfilen har ställts in, låt oss göra ett första åtagande med GitLab. Vi skapar en ny gren med namnet v0.1, börjar spåra filerna i lagringsplatsen, genomför ändringarna och omvandlar ändringarna till GitLab på v0.1-grenen. Kör kommandona nedan från ~/public för att utlösa det första åtagandet.

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

Om du kontrollerar lagringsplatsen i GitLab ser du nu filerna från ditt första åtagande.

Första åtagandet(commit) med GitLab.
Första åtagandet(commit) med GitLab.

Konfigurera iscensättningsmiljö hos Kinsta

Nästa steg är att skapa och konfigurera en iscensättningsmiljö i MyKinsta så att du har en säker plats där du kan testa nya plugins, teman och kod utan att påverka din live-/produktionsmiljö.

Skapar en ny Kinsta-iscensättningsmiljö i MyKinsta.
Skapar en ny Kinsta-iscensättningsmiljö i MyKinsta.

När du har skapat webbplatsens iscensättningsmiljö, SSH i iscensättningsmiljön i ett nytt kommandoradsfönster (håll det separata fönstret för din livemiljö öppet) och kör kommandot nedan för att kontrollera om det finns några kodändringar.

cd ~/public && git status

Du bör se ett meddelande i stil med det som du ser nedan. Som du kan se är grenen den v0.1 som skapades tidigare. Dessutom har wp-config.php-filen ändrats. Detta sker eftersom Kinsta lägger till några ytterligare rader i wp-config.php när du skapar iscensättningsmiljön.

Ändrade filer i Kinsta-iscensättningsmiljön.
Ändrade filer i Kinsta-iscensättningsmiljön.

Genomför och distribuera ändringar i Live

Låt oss slutligen göra några ändringar i iscensättningsmiljön och skicka ett nytt åtagande till Kinsta Live-miljön med GitLab. Tänk på att den här metoden kommer att kringgå Kinsta’s Omvandla till Live-funktion.

I det här exemplet, låt oss installera Yoast SEO-plugin med WP-CLI med kommandot nedan.

wp plugin install wordpress-seo

När Yoast SEO-pluginet har installerats kör du kommandona nedan för att göra ett åtagande och skicka ändringarna till v0.1-grenen.

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

Slutligen, låt oss växla till huvudgrenen, slå samman v0.1 till main och skicka main till GitLab med kommandona nedan. Detta gör att GitLab initierar en distributionsprocess till din Kinsta-livemiljö på grund av only: - main -inställningen i GitLab-konfigurationsfilen.

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

I GitLab går du till CI/CD > jobs i lagringsplatsens sidofält för att se att job körs. Detta job är GitLab som distribuerar Yoast SEO-pluginet till din Kinsta-livemiljö.

Aktiv job i GitLab.
Aktiv job i GitLab.

När job är klart växlar du tillbaka till kommandoradsfönstret för din livemiljö och kör wp plugin list i det fönstret. Du bör se wordpress-seo i listan. Detta är Yoast SEO-pluginet som tidigare installerades på iscensättningsmiljön.

Yoast SEO-pluginet distribuerades via GitLab.
Yoast SEO-pluginet distribuerades via GitLab.

Om du är en tema- eller plugin-utvecklare som arbetar med Kinsta-webbplatser kan du konfigurera automatisk distribution via GitLab CI/CD för att snabba upp arbetsflödet. Du tillhandahåller samtidigt en versionskontroll.