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.

Créez une sauvegarde téléchargeable dans MyKinsta.
Créez une sauvegarde téléchargeable dans MyKinsta.

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 secretSecret
KINSTA_SERVER_IPHôte, par exemple 12.34.56.78
KINSTA_USERNAMENom d’utilisateur, par exemple kinstahelp
MOT DE PASSEMot de passe
PORTPort, par exemple 12345
Informations SSH pour ajouter des secrets à GitHub.
Informations SSH pour ajouter des secrets à GitHub.

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.

Commande de terminal SSH pour votre site.
Commande de terminal SSH pour votre site.

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 :

  1. Accédez à votre compte GitHub, cliquez sur votre image de profil, puis sélectionnez Paramètres.
  2. Cliquez sur Developer settings > Personal access tokens > Tokens (classic).
  3. Cliquez sur Generate new token > Generate new token (classic), et dans Note, donnez-lui un nom (par exemple, « Kinsta Deployment Token »).
  4. Sous Select scopes, cochez repo (pour un contrôle total des dépôts privés).
  5. 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 branche main dans votre dépôt GitHub.
    • git reset --hard origin/main: Applique ces changements en mettant à jour le site live dans le répertoire public 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.

Cet article vous a été utile ?