Voor meer gevorderde gebruikers kan GitLab CI/CD (continuous integration/continuous delivery of continuous deployment) automatisch codewijzigingen deployen op je Kinsta site wanneer een nieuwe commit naar de betreffende branch wordt gepusht. Met deze methode kun je continu code naar je live omgeving op Kinsta pushen zonder de WordPress MySQL database te overschrijven.

Met deze setup kun je code pushen vanuit je lokale omgeving of Kinsta testomgeving en op die manier beschikken over een versiebeheersysteem. In het onderstaande voorbeeld zullen we een testomgeving instellen en wijzigingen in die omgeving naar onze live omgeving pushen via GitLab (waarbij de Push to Live feature van Kinsta wordt omzeild).

Als je nog geen GitLab account hebt, kun je hun aanmeldingspagina bezoeken om aan de slag te gaan.

Een Kinsta site maken

Voor deze tutorial beginnen we met het maken van een nieuwe lege site op Kinsta en installeren we WordPress later. Als je al een Kinsta site hebt, kun je nog steeds de stappen in deze tutorial volgen om je site te verbinden met GitLab.

Ga in MyKinsta naar je Websites pagina en klik op Site toevoegen in de rechterbovenhoek. Selecteer de optie Geen WordPress installeren in de modal/popup en klik op de Doorgaan knop. Vul de gevraagde velden in, klik op de knop Doorgaan om door te gaan naar de nieuwe vensters en voltooi het aanmaakproces van de site.

 

Maak een lege site in MyKinsta.
Maak een lege site in MyKinsta.

Een GitLab project maken

Ga om te beginnen naar GitLab en klik op Create a project om een nieuwe repository voor je Kinsta site te maken.

Een project aanmaken in GitLab.
Een project aanmaken in GitLab.

Selecteer de optie Blank Project en vul de velden Project name en Project slug in.

Maak een leeg project aan in GitLab.
Maak een leeg project aan in GitLab.

Voor de optie Visibility Level raden we aan om de repository private te maken. Aangezien deze repository code van premium plugins en thema’s kan bevatten, zou het toegankelijk maken van deze code iedereen in staat stellen om de producten te downloaden waarvoor jij hebt betaald.

Zodra je klaar bent met het configureren van het nieuwe project, klik Create project om door te gaan.

SSH sleutels configureren

Vervolgens moet je SSH sleutels toevoegen aan GitLab en MyKinsta om de twee platforms te laten communiceren.

Openbare SSH sleutel toevoegen aan GitLab

Maak allereerst verbinding met je live Kinsta site via SSH en voer het onderstaande cat commando uit om je openbare SSH sleutel te tonen.

cat ~/.ssh/id_rsa.pub

Je openbare sleutel moet er ongeveer hetzelfde uitzien als de onderstaande sleutel. Houd je commandlinevenster voorlopig open en ga terug naar GitLab in je webbrowser.

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

Klik op de dropdown van het gebruikerspictogram in de rechterbovenhoek van GitLab en klik op Settings.

Ga naar de GitLab instellingenpagina.
Ga naar de GitLab instellingenpagina.

Binnen de Settings pagina, klik je op SSH Keys in de zijbalk.

SSH sleutels in GitLab.
SSH sleutels in GitLab.

Plak je openbare SSH sleutel in het Key veld. Het Title veld zou nu automatisch aangevuld moeten worden met een naam, maar voel je vrij deze te wijzigen. GitLab stelt je ook in staat om een vervaldatum in te stellen voor de SSH sleutel. Deze optie is handig als je beveiligingsprotocollen hebt ingesteld om je infrastructuur te beschermen, en met regelmaat SSH sleutels ongeldig maakt en roteert. Heb je dit niet, dan kan je het Expires at veld gerust leeg laten.

Voeg je SSH sleutels toe in GitLab.
Voeg je SSH sleutels toe in GitLab.

Nadat je je configuratie hebt gecontroleerd, klikt u op Add key om het proces te voltooien.

Voeg je openbare SSH sleutel toe aan MyKinsta

Nu je openbare SSH sleutel is toegevoegd aan GitLab, moet je dezelfde sleutel toevoegen aan MyKinsta. Deze stap voegt je openbare SSH sleutel toe aan het authorized_keys bestand van je site (alleen schrijfbaar door root en MyKinsta) en staat GitLab toe aan SSH in je site om codewijzigingen door te voeren. Klik in MyKinsta op je gebruikerspictogram in de linkerbenedenhoek en klik op Gebruikersinstellingen.

Gebruikersinstellingen in MyKinsta.
Gebruikersinstellingen in MyKinsta.

Scrol naar beneden en klik op SSH-sleutel toevoegen.

Voeg SSH sleutel toe in MyKinsta.
Voeg SSH sleutel toe in MyKinsta.

Geef in de modal/popup een Label (naam) op voor de SSH sleutel, plak je openbare sleutel in het veld SSH-sleutel en klik op SSH-sleutel toevoegen om het proces te voltooien.

Voeg je SSH sleutel toe in MyKinsta.
Voeg je SSH sleutel toe in MyKinsta.

Private SSH sleutel toevoegen aan GitLab

Vervolgens moet je de private SSH sleutel van de live omgeving van je site toevoegen als een omgevingsvariabele in GitLab.

Om je private sleutel te vinden, schakel je terug naar je commandline en voer je het onderstaande commando uit. Zorg ervoor dat je je private SSH sleutel nergens buiten GitLab deelt.

cat ~/.ssh/id_rsa

Klik in GitLab op het project dat je eerder hebt gemaakt. Ga in de zijbalk met de muis over Settings en klik op CI/CD in het menu dat wordt weergegeven.

GitLab repository CI/CD instellingen.
GitLab repository CI/CD instellingen.

Scrol omlaag naar het gedeelte Variabelen, klik op de knop Expand en klik op Add variable. Gebruik SSH_PRIVATE_KEY voor de Key naam, plak je persoonlijke sleutel in het Value veld en klik op de knop Add variable om door te gaan.

Nadat de variabele is toegevoegd, kun je deze zien in je repository-instellingen.

SSH private key variabele in GitLab.
SSH private key variabele in GitLab.

Een GitLab repo klonen naar MyKinsta

Nu de nodige SSH sleutels zijn toegevoegd, kun je je GitLab repository klonen naar je Kinsta live omgeving. Navigeer in GitLab naar je repository, klik op de blauwe Clone knop en klik op het copy/clipboard icoon om het repository-adres te kopiëren onder Clone with SSH.

Kloon met SSH in GitLab.
Kloon met SSH in GitLab.

Ga terug naar je commandline en navigeer naar de home map van je live omgeving. Als je niet zeker weet hoe je naar je persoonlijke map kunt gaan, gebruik je het onderstaande commando.

cd ~/

Zodra je in de home directory bent, voer je het git clone commando uit met het repository-adres dat je gekopieerd hebt van GitLab.

git clone [your-repository-url-here]

Na het klonen van de repository, zie je een waarschuwing die zegt “you appear to have cloned an empty repository.”. Dit is te verwachten omdat de repo op dit moment leeg is.

Kloon je GitLab repository naar je Kinsta live omgeving.
Kloon je GitLab repository naar je Kinsta live omgeving.

Bij Kinsta levert onze Nginx configuratie content vanuit de map ~/public. Je moet dus de huidige ~/public map verwijderen en je gekloonde repo map hernoemen naar ~/public. Voer de twee onderstaande opdrachten uit om dit te doen.

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

GitLab repo configureren

Gebruik vervolgens het onderstaande commando om naar de ~/public map te navigeren.

cd ~/public

Voer de twee onderstaande commando’s uit om je GitLab repo te configureren. Zorg ervoor dat je je geldige e-mailadres en een gebruikersnaam opgeeft die aan je GitLab account is gekoppeld.

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

WordPress installeren met WP-CLI

Nu de GitLab repo is gekloond naar je Kinsta live omgeving en is geconfigureerd, laten we WordPress installeren. Je kunt WordPress handmatig installeren door het te downloaden van wordpress.org, of je kunt het installeren met WP-CLI. In dit voorbeeld gebruiken we WP-CLI om WordPress te installeren met het onderstaande commando in de  ~/public map.

wp core download

Na het installeren van WordPress ziet je ~/public map er als volgt uit:

Een frisse WordPress installatie met WordPress kernbestanden en -mappen.
Een frisse WordPress installatie met WordPress kernbestanden en -mappen.

Ga vervolgens naar de pagina Domeinen van je site in MyKinsta en klik op de link URL openen om je primaire domein te bezoeken.

Ga naar je primaire domein om WordPress te configureren.
Ga naar je primaire domein om WordPress te configureren.

Je wordt begroet met het WordPress installatieproces. Als je vragen hebt over het instellen van WordPress, hebben we hier een uitgebreide handleiding.

Configureer de nieuwe installatie van WordPress.
Configureer de nieuwe installatie van WordPress.

Nadat WordPress is geïnstalleerd, zou je je nieuwe WordPress site moeten kunnen zien door je primaire domein te bezoeken.

Een nieuwe WordPress installatie.
Een nieuwe WordPress installatie.

De GitLab CI/CD pipeline configureren

Vervolgens moet je een configuratiebestand instellen om GitLab te instrueren om automatische deployments te starten nadat de main branch van de repo is bijgewerkt. Om dit te doen, moet je ervoor zorgen dat u zich in de map ~/public in je Kinsta live omgeving bevindt (voer cd ~/public uit om daar naartoe te navigeren indien nodig) en maak een nieuw bestand met de naam .gitlab-ci.yml met het onderstaande commando.

touch .gitlab-ci.yml

Nadat het bestand is aangemaakt, voeg je de volgende tekst toe aan het bestand. Je kan het bestand bewerken met nano of vim in de opdrachtregel of met SFTP en een tekst- of code-editor. Als je een SFTP client gebruikt, moet je verborgen bestanden inschakelen om het .gitlab-ci.yml bestand te zien.

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 nonn" > ~/.ssh/config'
deploy_live:
    environment:
        name: Live
        url: your-primary-domain
    script:
        - ssh [email protected] -p port-number "cd public-root && git checkout main && git pull origin main && exit"
    only:
        - main

Wijzig de url en script parameters in het deploy_live-blok; vervang de vetgedrukte waarden door de gegevens van je site in MyKinsta.

  • Vervang jouw-primaire-domein door het primaire domein van je site.
  • Vervang ssh [email protected] -p poortnummer door het SSH terminal commando in MyKinsta (Websites > sitenaam > Info > Basisgegevens).
  • Vervang public-root door het Pad in MyKinsta (Websites > sitenaam > Info > SFTP/SSH).
Public pad en SSH gegevens in MyKinsta.
Public pad en SSH gegevens in MyKinsta.

De only: - main sectie van het bestand verwijst naar de repository branch die GitLab’s CI/CD proces zal activeren. Met deze configuratie zullen pushes naar de main branch een deployment naar je Kinsta live omgeving initiëren. Als je een andere branch wilt opgeven om de deployment te activeren, kun je de configuratie wijzigen.

Als je extra controle binnen de configuratie wilt implementeren om ook rekening te houden met een testomgeving, kun je een extra  deploy_staging toevoegen met de URL- en SSH gegevens voor je Kinsta testomgeving.

deploy_staging:
    environment:
        name: Staging
        url: your-staging-domain
    script:
        - ssh [email protected] -p port-number "cd public-root && git checkout main && git pull origin staging && exit"
    only:
        - staging

Let ook op de only: - staging sectie – dit betekent dat het pushen naar de staging branch het CI/CD proces van GitLab zal starten. Je kan dit indien nodig aanpassen om te deployen vanuit branch van jouw keuze.

Initiële commit bij GitLab

Nu WordPress en het GitLab configuratiebestand zijn ingesteld, is het tijd om een eerste commit te maken naar GitLab. We maken een nieuwe branch genaamd v0.1, beginnen met het tracken van de bestanden in de repo, committen de wijzigingen, en pushen de wijzigingen naar GitLab op de v0.1 branch. Voer de onderstaande commando’s uit vanuit  ~/public om de eerste commit te activeren.

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

Als je je repository in GitLab checkt, zie je nu de bestanden van je eerste commit.

Eerste commit naar GitLab.
Eerste commit naar GitLab.

Kinsta testomgeving configureren

De volgende stap is het creëren en configureren van een testomgeving in MyKinsta, zodat je een veilige plek hebt om nieuwe plugins, thema’s en code te testen zonder dat dit invloed heeft op je live/productieomgeving.

Een testomgeving aanmaken in MyKinsta.
Een testomgeving aanmaken in MyKinsta.

Na het maken van de testomgeving van je site, maak je met SSH verbinding met de testomgeving in een nieuw opdrachtregelvenster (houd het andere venster voor je live omgeving open) en voer de onderstaande opdracht uit om te controleren op eventuele codewijzigingen.

cd ~/public && git status

Je zou een bericht als het onderstaande moeten zien. Zoals je kunt zien, is de branch de v0.1 die eerder is gemaakt. Daarnaast is het wp-config.php bestand veranderd. Dit gebeurt omdat Kinsta een paar extra regels aan wp-config.php toevoegt bij het maken van de testomgeving.

Gewijzigde bestanden in de Kinsta testomgeving.
Gewijzigde bestanden in de Kinsta testomgeving.

De wijzigingen naar live committen en deployen

Laten we ten slotte enkele wijzigingen aanbrengen in de testomgeving en een nieuwe commit pushen naar de Kinsta live omgeving met GitLab. Houd er rekening mee dat deze methode de Push to Live feature van Kinsta omzeilt.

Voor dit voorbeeld, laten we de Yoast SEO plugin installeren met behulp van WP-CLI met het onderstaande commando.

wp plugin install wordpress-seo

Nadat de Yoast SEO plugin is geïnstalleerd, voer je de onderstaande commando’s uit om een commit te maken en de wijzigingen naar de v0.1 branch te pushen.

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

Laten we ten slotte overschakelen naar de main branch, v0.1 mergen naar main, en main pushen naar GitLab met de onderstaande commando’s. Dit zorgt ervoor dat GitLab een deploymentproces start naar je Kinsta live omgeving vanwege de only: - main instelling in het GitLab configuratiebestand.

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

Ga in GitLab naar CI/CD > Jobs in de zijbalk van je repo, en je zult de job zien draaien. Deze job is GitLab die de Yoast SEO plugin deployet in je Kinsta live omgeving.

Actieve job in GitLab.
Actieve job in GitLab.

Nadat de job is voltooid, schakel je terug naar het opdrachtregelvenster voor je live-omgeving en voer je wp plugin list in dat venster uit. Je zou wordpress-seo in de lijst moeten zien. Dit is de Yoast SEO plugin die eerder in de testomgeving is geïnstalleerd.

De Yoast SEO plugin werd geïmplementeerd via GitLab.
De Yoast SEO plugin werd geïmplementeerd via GitLab.

Als je een ontwikkelaar van thema’s of plugins bent die met Kinsta sites werkt, kan het instellen van automatische deploys via GitLab CI/CD helpen om je workflow te versnellen terwijl je ook aan versiebeheer doet.