GitLab CI/CD
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 WordPress site hebt, kun je nog steeds de stappen in deze tutorial volgen om je site te verbinden met GitLab.
Ga in MyKinsta naar je WordPress sites pagina. Klik op de knop Sites toevoegen in de rechterbovenhoek en selecteer Maak nieuwe site in het vervolgkeuzemenu. Selecteer de optie Lege omgeving (zonder WordPress) in het popup venster en klik op de knop Doorgaan.
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.
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.
Selecteer de optie Blank Project en vul de velden Project name en Project slug in.
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 het gebruikersicoon dropdown in de rechterbovenhoek van GitLab, en klik op Preferences.
Klik in de Preferences pagina op SSH Keys in de zijbalk.
Klik op Add new key en plak je public SSH sleutel in het veld Key. Het Title veld zou automatisch moeten worden ingevuld met een naam, maar voel je vrij om het te veranderen als je dat wilt. GitLab staat je ook toe om een vervaltijd voor de SSH sleutel in te stellen. Deze optie is handig als je SSH sleutels ongeldig maakt en roteert als onderdeel van je infrastructuur beveiligingsprotocol. Als je dat niet doet, voel je dan vrij om het Vervalt op veld leeg te laten.
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 naam in de rechterbovenhoek en selecteer Gebruikersinstellingen in het vervolgmenu.
Scroll naar beneden en klik op de knop SSH sleutel toevoegen.
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.
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.
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.
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.
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.
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:
Ga vervolgens naar de pagina Domeinen van je site in MyKinsta en klik op de link URL openen om je primaire domein te bezoeken.
Je wordt begroet met het WordPress installatieproces. Als je vragen hebt over het instellen van WordPress, hebben we hier een uitgebreide handleiding.
Nadat WordPress is geïnstalleerd, zou je je nieuwe WordPress site moeten kunnen zien door je primaire domein te bezoeken.
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 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
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 gebruiker@ipadres -p poortnummer door het SSH terminal commando in MyKinsta (WordPress Websites > sitenaam > Info > SFTP/SSH).
- Vervang public-root door het Pad in MyKinsta (WordPress Websites > sitenaam > Info > Omgevingsdetails).
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 user@ip-address -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.
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.
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.
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.
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.
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.