GitHub CI/CD
Voor gevorderde gebruikers kan GitHub CI/CD (Continuous Integration/Continuous Delivery of Continuous Deployment) automatisch codeveranderingen naar je Kinsta site deployen zodra een nieuwe commit naar de aangewezen branch wordt gepushed. Deze opzet maakt het mogelijk om naadloos code te deployen vanuit je lokale omgeving via SSH en GitHub Actions, waardoor je continu updates voor je site kunt uitvoeren.
Om deze stappen te volgen, moet je een bestaande site hebben die gehost wordt op Kinsta en een GitHub account.
1. Een backup van je site downloaden
Je kunt een backup van je site downloaden om de GitHub repository in te stellen en er lokaal aan te werken. Als alternatief kun je DevKinsta gebruiken om je site van de Kinsta server te halen en er lokaal aan te werken.
Ga in MyKinsta naar WordPress Sites > sitenaam > Backups > Downloaden > Nu backup maken.
Als je backup klaar is, klik je op Downloaden, sla je deze op je lokale computer op en pak je de bestanden uit in een map.
2. De GitHub repository instellen
Open de map met de bestanden van je site in de code editor van je voorkeur. Om het uploaden van onnodige WordPress core bestanden, media uploads of gevoelige informatie te voorkomen, voeg je een .gitignore bestand toe aan de hoofdmap van je project. Je kunt een standaard WordPress .gitignore template gebruiken, de inhoud ervan kopiëren en het opslaan om ervoor te zorgen dat alleen de essentiële bestanden worden gevolgd.
Maak een GitHub repository aan en push de bestanden van je site naar GitHub.
3. GitHub secrets instellen voor Kinsta
Om deployments van GitHub naar Kinsta te automatiseren, heb je belangrijke SSH gegevens nodig, waaronder je gebruikersnaam, wachtwoord, poort en IP adres. Omdat deze gevoelig zijn, moet je ze veilig opslaan als GitHub Secrets.
Ga binnen GitHub naar je repository, klik op Settings > Secrets and Variables > Actions > New Repository Secret.
Voeg de volgende secrets toe met behulp van de SFTP/SSH gegevens van de Info pagina van je site in MyKinsta:
Naam geheim | Geheim |
KINSTA_SERVER_IP | Host bijv. 12.34.56.78 |
KINSTA_USENAME | Gebruikersnaam bijv. kinstahelp |
PASSWORD | Wachtwoord |
PORT | Poort bijv. 12345 |
4. Een kale Git repository op Kinsta maken
Een kale Git repository is een externe bestemming waar GitHub je code naartoe zal pushen. Deze repository is een centrale repository ontworpen om je code te ontvangen en op te slaan.
Open een nieuwe terminal en SSH naar je Kinsta server met het SSH terminal commando vanaf de Info pagina van je site in MyKinsta.
Voer het wachtwoord van je site in op de Info pagina in MyKinsta en kopieer vervolgens het pad uit Omgevingsdetails.
Navigeer naar de private map op je server door public
te vervangen door private
en your-site
door de mapnaam uit het pad van je site:
cd /www/your-site/private
Als de private map niet bestaat, gebruik dan het volgende commando om hem aan te maken:
mkdir -p /www/your-site/private
Maak de kale Git repository met het volgende commando, waarbij je your-repo.git
vervangt door de naam van je GitHub repository:
git init --bare your-repo.git
5. De post-receive hook instellen
De post-receive
hook zet automatisch de code naar je live site zodra nieuwe wijzigingen naar de main
branch in GitHub worden gepushed.
Navigeer naar de hooks map in je kale Git repository, waarbij je your-site
vervangt door de mapnaam van je site en your-repo
door de naam van je GitHub repository:
cd /www/your-site/private/your-repo.git/hooks
Maak en bewerk de post-receive
hook:
nano post-receive
Voeg het volgende script toe aan het bestand post-receive
. Dit controleert de nieuwste code in de public
directory van je live site:
#!/bin/bash
TARGET="/www/your-site/public"
GIT_DIR="/www/your-site/private/your-repo.git"
while read oldrev newrev ref
do
BRANCH=$(git rev-parse --symbolic --abbrev-ref $ref)
if [[ $BRANCH == "main" ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
else
echo "Ref $ref received. Doing nothing: only the main branch may be deployed on this server."
fi
done
Het script zet code uit van alleen de main
branch. De variabele TARGET
wijst naar de map waar de bestanden van je live site staan en de variabele GIT_DIR
wijst naar de kale Git repository.
Sla het bestand op en sluit het af met Ctrl + X, dan Y en Enter.
Maak het script uitvoerbaar zodat het na elke push automatisch uitgevoerd kan worden:
chmod +x post-receive
6. Een GitHub persoonlijk toegangstoken (PAT) genereren en toevoegen
Als je code naar GitHub pusht via SSH, moet je een PAT gebruiken om je te authenticeren. Met dit token kan GitHub je pushes veilig accepteren.
Om de PAT te genereren:
- Ga naar je GitHub account, klik op je profielfoto en selecteer Settings.
- Klik op Developer Settings > Personal access tokens > Tokens (classic).
- Klik op Generate New Token > Generate New Token (classic), en geef het binnen Comment een naam (bijv. “Kinsta Deployment Token”).
- Onder Select scopes vink je repo aan (voor volledige controle over privé repositories).
- Klik op Generate token en kopieer het token. (Je zult het niet meer kunnen zien)
Voer het volgende commando uit om je GitHub repository als remote toe te voegen, waarbij je your-username
vervangt door je GitHub gebruikersnaam, YOUR_PERSONAL_ACCESS_TOKEN
door het PAT dat je zojuist hebt gegenereerd, en your-repo
door de naam van je GitHub repository:
git remote add origin https://your-username:[email protected]/your-username/your-repo.git
7. De GitHub Actions workflow maken
Deze workflow deployt automatisch wijzigingen naar Kinsta wanneer je naar de main
branch pusht. Om de deployment te automatiseren, moet je definiëren hoe de deployment zal gebeuren met behulp van een YAML bestand.
Maak in je GitHub repository een nieuwe map genaamd .github/workflows
binnen deze map, maak een nieuw bestand genaamd deploy.yml
en voeg de volgende inhoud toe aan het bestand, waarbij je your-site
vervangt door de mapnaam van het pad op je Kinsta site en your-repo
door je GitHub repository naam:
name: Deploy to Kinsta
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to Kinsta via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.KINSTA_SERVER_IP }}
username: ${{ secrets.KINSTA_USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd /www/your-site/private/your-repo.git # Navigate to the bare Git repository on Kinsta
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git fetch origin main # Fetch the latest changes from GitHub
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git reset --hard origin/main # Deploy changes to the live site
Deze workflow doet het volgende:
- Trigger: De workflow wordt getriggerd elke keer als code wordt gepushed naar de
main
branch van je GitHub repository. - Jobs: De workflow bevat één
job
genaamddeploy
, die draait op een Ubuntu virtuele machine (ubuntu-latest
). - Checkout code: Dit gebruikt de
actions/checkout@v2
actie om de nieuwste code van je GitHub repository te halen. - Deploy to Kinsta via SSH: De
appleboy/ssh-action
wordt gebruikt om veilig verbinding te maken met je Kinsta server via SSH met de geheimen die je hebt geconfigureerd (server IP, gebruikersnaam, wachtwoord en poort). Het script in deze stap voert de volgende commando’s uit:cd /www/your-site/private/your-repo.git
: Navigeert naar de kale Git repository op je Kinsta server.git fetch origin main
: Haalt de laatste wijzigingen op van demain
branch in je GitHub repository.git reset --hard origin/main
: Past die wijzigingen toe door de live site in depublic
directory waar WordPress wordt gehost bij te werken.
8. De workflow testen
Als je de workflow eenmaal hebt ingesteld, kun je hem testen door een kleine wijziging naar de main
branch van je GitHub repository te pushen. Elke keer dat je een wijziging pusht, activeert GitHub Actions automatisch de deployment, waarbij de laatste versie van je code wordt opgehaald en uitgerold naar je live site op Kinsta.
Je kunt de status van je deployment in de gaten houden door naar het tabblad Actions in je GitHub repository te gaan. Als de workflow fouten tegenkomt, zie je gedetailleerde logs om je te helpen bij het oplossen van problemen.