GitHub CI/CD
Pour les utilisateurs avancés, GitHub CI/CD (Continuous Integration/Continuous Delivery ou Continuous Deployment) peut automatiquement déployer des modifications de code sur votre site Kinsta chaque fois qu’un nouveau commit est poussé sur la branche désignée. Cette configuration permet un déploiement transparent du code depuis votre environnement local via SSH et les actions GitHub, permettant des mises à jour continues de votre site.
Pour suivre ces étapes, vous devez avoir un site existant hébergé sur Kinsta et un compte GitHub.
1. Télécharger une sauvegarde de votre site
Vous pouvez télécharger une sauvegarde de votre site pour configurer le dépôt GitHub et travailler dessus localement. Vous pouvez également utiliser DevKinsta pour extraire votre site du serveur Kinsta et travailler dessus localement.
Dans MyKinsta, allez dans Sites WordPress > nom du site > Sauvegardes > Télécharger > Créer une sauvegarde maintenant.
Lorsque votre sauvegarde est prête, cliquez sur Télécharger, enregistrez-la sur votre ordinateur local et décompressez les fichiers dans un dossier.
2. Configurer le dépôt GitHub
Ouvrez le dossier contenant les fichiers de votre site dans votre éditeur de code préféré. Pour éviter de télécharger des fichiers inutiles de WordPress, des médias ou des informations sensibles, ajoutez un fichier .gitignore au répertoire racine de votre projet. Vous pouvez utiliser un modèle WordPress .gitignore standard, copier son contenu et l’enregistrer pour vous assurer que seuls les fichiers essentiels sont suivis.
Créez un dépôt GitHub et transférez les fichiers de votre site sur GitHub.
3. Configurer les secrets GitHub pour Kinsta
Pour automatiser les déploiements de GitHub vers Kinsta, vous avez besoin de détails SSH clés, y compris votre nom d’utilisateur, votre mot de passe, votre port et votre adresse IP. Ces informations étant sensibles, vous devez les stocker de manière sécurisée en tant que secrets GitHub.
Dans GitHub, allez dans votre dépôt, cliquez sur Réglages > Secrets et variables > Actions > Nouveau secret de dépôt.
Ajoutez les secrets suivants en utilisant les détails SFTP/SSH de la page Info de votre site dans MyKinsta :
Nom du secret | Secret |
KINSTA_SERVER_IP | Hôte, par exemple 12.34.56.78 |
KINSTA_USERNAME | Nom d’utilisateur, par exemple kinstahelp |
MOT DE PASSE | Mot de passe |
PORT | Port, par exemple 12345 |
4. Créer un dépôt Git nu sur Kinsta
Un dépôt Git nu est une destination distante où GitHub poussera votre code. Ce dépôt est un dépôt central conçu pour recevoir et stocker votre code.
Ouvrez un nouveau terminal et connectez-vous en SSH à votre serveur Kinsta en utilisant la commande SSH depuis la page Info de votre site dans MyKinsta.
Entrez le mot de passe de votre site à partir de la page Info dans MyKinsta, puis copiez le chemin d’accès à partir des détails de l’environnement.
Naviguez vers le dossier privé sur votre serveur en remplaçant public
par private
et your-site
par le nom du dossier dans le chemin d’accès de votre site :
cd /www/your-site/private
Si le dossier privé n’existe pas, utilisez la commande suivante pour le créer :
mkdir -p /www/your-site/private
Créez le dépôt Git nu avec la commande suivante, en remplaçant your-repo.git
par le nom de votre dépôt GitHub :
git init --bare your-repo.git
5. Configurez le hook post-receive
Le hook post-receive
déploie automatiquement le code sur votre site live à chaque fois que de nouveaux changements sont poussés vers la branche main
dans GitHub.
Naviguez jusqu’au répertoire hooks dans votre dépôt Git nu, en remplaçant your-site
par le nom du dossier de votre site et your-repo
par le nom de votre dépôt GitHub :
cd /www/your-site/private/your-repo.git/hooks
Créez et éditez le hook post-receive
:
nano post-receive
Ajoutez le script suivant au fichier post-receive
. Ce script vérifie le code le plus récent dans le répertoire public
de votre 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
Le script déploie le code de la branche main
. La variable TARGET
pointe vers le répertoire où se trouvent les fichiers de votre site live et la variable GIT_DIR
pointe vers le dépôt Git nu.
Enregistrez et quittez le fichier en appuyant sur Ctrl + X, puis Y et Entrée.
Rendez le script exécutable afin qu’il puisse s’exécuter automatiquement après chaque poussée :
chmod +x post-receive
6. Générer et ajouter un jeton d’accès personnel GitHub (PAT)
Lorsque vous envoyez du code à GitHub via SSH, vous devez utiliser un PAT pour vous authentifier. Ce jeton permet à GitHub d’accepter vos poussées en toute sécurité.
Pour générer le PAT :
- Accédez à votre compte GitHub, cliquez sur votre image de profil, puis sélectionnez Paramètres.
- Cliquez sur Developer settings > Personal access tokens > Tokens (classic).
- Cliquez sur Generate new token > Generate new token (classic), et dans Note, donnez-lui un nom (par exemple, « Kinsta Deployment Token »).
- Sous Select scopes, cochez repo (pour un contrôle total des dépôts privés).
- Cliquez sur Generate token, et copiez le jeton. (Vous ne pourrez plus le voir)
Exécutez la commande suivante pour ajouter votre dépôt GitHub en tant que dépôt distant, en remplaçant your-username
par votre nom d’utilisateur GitHub, YOUR_PERSONAL_ACCESS_TOKEN
par le PAT que vous venez de générer et your-repo
par le nom de votre dépôt GitHub :
git remote add origin https://your-username:[email protected]/your-username/your-repo.git
7. Créer le flux de travail GitHub Actions
Ce flux de travail déploie les changements vers Kinsta automatiquement chaque fois que vous poussez vers la branche main
. Pour automatiser le déploiement, vous devez définir comment le déploiement se fera à l’aide d’un fichier YAML.
Dans votre dépôt GitHub, créez un nouveau répertoire appelé .github/workflows
à l’intérieur de ce répertoire, créez un nouveau fichier appelé deploy.yml
et ajoutez le contenu suivant au fichier, en remplaçant your-site
par le nom du dossier à partir du chemin sur votre site Kinsta et your-repo
par le nom de votre dépôt GitHub :
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
Ce flux de travail effectue les opérations suivantes :
- Déclenchement : Le flux de travail est déclenché chaque fois que du code est poussé vers la branche
main
de votre dépôt GitHub. - Jobs : Le flux de travail contient un
job
appelédeploy
, qui s’exécute sur une machine virtuelle Ubuntu (ubuntu-latest
). - Code de vérification : Cette action utilise l’action
actions/checkout@v2
pour extraire le dernier code de votre dépôt GitHub. - Déploiement sur Kinsta via SSH : Le site
appleboy/ssh-action
est utilisé pour se connecter en toute sécurité à votre serveur Kinsta via SSH en utilisant les secrets que vous avez configurés (IP du serveur, nom d’utilisateur, mot de passe et port). Le script de cette étape exécute les commandes suivantes :cd /www/your-site/private/your-repo.git
: Navigue vers le dépôt Git nu sur votre serveur Kinsta.git fetch origin main
: Récupère les dernières modifications de la branchemain
dans votre dépôt GitHub.git reset --hard origin/main
: Applique ces changements en mettant à jour le site live dans le répertoirepublic
où WordPress est hébergé.
8. Tester le flux de travail
Une fois que vous avez configuré le flux de travail, vous pouvez le tester en apportant une petite modification à la branche main
de votre dépôt GitHub. Chaque fois que vous apportez une modification, les Actions GitHub déclenchent automatiquement le déploiement, en extrayant la dernière version de votre code et en la déployant sur votre site en ligne sur Kinsta.
Vous pouvez suivre l’état de votre déploiement en allant sur l’onglet Actions dans votre dépôt GitHub. Si le flux de travail rencontre des erreurs, vous verrez des journaux détaillés qui vous aideront à résoudre les problèmes.