GitLab CI/CD

Pour les utilisateurs plus avancés, GitLab CI/CD (continuous integration/continuous delivery ou continuous deployment) peut déployer automatiquement les modifications de code sur votre site Kinsta chaque fois qu’un nouveau commit est poussé sur la branche concernée. Cette méthode vous permet de pousser continuellement du code vers votre environnement live sur Kinsta sans écraser la base de données MySQL de WordPress.

Cette configuration vous permet de pousser du code à partir de votre environnement local ou de l’environnement de staging de Kinsta et d’avoir un système de contrôle de version. Dans l’exemple ci-dessous, nous allons configurer un environnement de staging et pousser les changements de cet environnement vers notre environnement en production via GitLab (en contournant la fonction Pousser en production de Kinsta).

Si vous n’avez pas encore de compte GitLab, visitez leur page d’inscription pour commencer.

Créer un site Kinsta

Pour ce tutoriel, nous allons commencer par créer un nouveau site vide sur Kinsta, et nous installerons WordPress plus tard. Si vous avez déjà un site Kinsta WordPress, vous pouvez toujours suivre les étapes de ce tutoriel pour connecter votre site à GitLab.

Dans MyKinsta, allez sur votre page Sites WordPress. Cliquez sur le bouton Ajouter un site dans le coin supérieur droit et sélectionnez Créer un nouveau site dans le menu déroulant. Sélectionnez l’option Environnement vide (sans WordPress) dans la fenêtre modale/popup, et cliquez sur le bouton Continuer.

Complétez les champs demandés, cliquez sur le bouton Continuer pour passer à chaque fenêtre, et terminez le processus de création du site.

Créer un site vide dans MyKinsta.
Créer un site vide dans MyKinsta.

Créer un projet GitLab

Pour commencer, rendez-vous sur GitLab et cliquez sur Créer un projet pour créer un nouveau dépôt pour votre site Kinsta.

Créer un projet dans GitLab.
Créer un projet dans GitLab.

Sélectionnez l’option Projet vierge, et remplissez les champs Nom du projet et Slug du projet.

Créer un projet vierge dans GitLab.
Créer un projet vierge dans GitLab.

Pour l’option Niveau de visibilité, nous vous recommandons de rendre le référentiel privé. Étant donné que ce dépôt peut contenir le code d’extensions et de thèmes premium, le laisser accessible sur l’Internet public permettrait à quiconque de télécharger les produits pour lesquels vous avez payé.

Une fois que vous avez terminé de configurer le nouveau projet, cliquez sur Créer le projet pour continuer.

Configuration des clés SSH

Ensuite, vous devrez ajouter des clés SSH à GitLab et MyKinsta pour permettre aux deux plateformes de communiquer.

Ajouter une clé publique SSH à GitLab

Tout d’abord, SSH dans l’environnement de production de votre site Kinsta et exécutez la commande cat ci-dessous pour afficher votre clé publique SSH.

cat ~/.ssh/id_rsa.pub

Votre clé publique devrait ressembler à celle ci-dessous. Laissez votre fenêtre de ligne de commande ouverte pour le moment, et retournez à GitLab dans votre navigateur web.

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

Cliquez sur le menu déroulant de l’icône de l’utilisateur dans le coin supérieur droit de GitLab, et cliquez sur Préférences.

Sur la page Préférences, cliquez sur Clés SSH dans la colonne latérale.

Cliquez sur Ajouter une nouvelle clé et collez votre clé publique SSH dans le champ Clé. Le champ Titre devrait se remplir automatiquement avec un nom, mais n’hésitez pas à le changer si vous le souhaitez. GitLab vous permet également de définir une date d’expiration pour la clé SSH. Cette option est utile si vous invalidez et faites pivoter les clés SSH dans le cadre du protocole de sécurité de votre infrastructure. Si ce n’est pas le cas, n’hésitez pas à laisser vide le champ Expire à.

Ajouter votre clé SSH dans GitLab.
Ajouter votre clé SSH dans GitLab.

Après avoir vérifié votre configuration, cliquez sur Ajouter une clé pour finaliser le processus.

Ajouter la clé publique SSH à MyKinsta

Maintenant que votre clé publique SSH a été ajoutée à GitLab, vous devez ajouter la même clé à MyKinsta. Cette étape ajoute votre clé publique SSH au fichier authorized_keys de votre site (uniquement accessible en écriture par root et MyKinsta) et permettra à GitLab de se connecter en SSH à votre site pour déployer les modifications de code. Dans MyKinsta, cliquez sur votre nom dans le coin supérieur droit et sélectionnez Réglages utilisateur dans le menu déroulant.

Réglages utilisateur dans MyKinsta.
Réglages utilisateur dans MyKinsta.

Faites défiler vers le bas et cliquez sur le bouton Ajouter une clé SSH.

Ajouter une clé SSH dans MyKinsta.
Ajouter une clé SSH dans MyKinsta.

Dans la fenêtre modale/popup, spécifiez un Libellé (nom) pour la clé SSH, collez votre clé publique dans le champ de la clé SSH, et cliquez sur Ajouter une clé SSH pour finaliser le processus.

Ajouter votre clé SSH dans MyKinsta.
Ajouter votre clé SSH dans MyKinsta.

Ajouter la clé privée SSH à GitLab

Ensuite, vous devrez ajouter la clé privée SSH de l’environnement en production de votre site comme variable d’environnement dans GitLab.

Pour trouver votre clé privée, revenez à votre fenêtre de ligne de commande, et exécutez la commande ci-dessous. Veillez à ne pas partager votre clé privée SSH en dehors de GitLab.

cat ~/.ssh/id_rsa

Dans GitLab, cliquez sur le projet que vous avez créé précédemment. Dans la colonne latérale, survolez Réglages et cliquez sur CI/CD dans le menu qui apparaît.

Réglages CI/CD du dépôt GitLab.
Réglages CI/CD du dépôt GitLab.

Faites défiler vers le bas jusqu’à la section Variables, cliquez sur le bouton Développer, puis sur Ajouter une variable. Utilisez SSH_PRIVATE_KEY pour le nom de la clé, collez votre clé privée dans le champ Valeur, et cliquez sur le bouton Ajouter une variable pour continuer.

Une fois la variable ajoutée, vous pourrez la voir dans les réglages de votre dépôt.

Variable de clé privée SSH dans GitLab.
Variable de clé privée SSH dans GitLab.

Cloner le repo GitLab sur MyKinsta

Maintenant que les clés SSH nécessaires ont été ajoutées, vous pouvez cloner votre référentiel GitLab sur votre environnement live Kinsta. Dans GitLab, naviguez vers votre dépôt, cliquez sur le bouton bleu Cloner, et cliquez sur l’icône de copie/classeur pour copier l’adresse du dépôt sous Cloner avec SSH.

Cloner avec SSH dans GitLab.
Cloner avec SSH dans GitLab.

Revenez à votre fenêtre de ligne de commande et naviguez vers le répertoire d’origine de votre environnement de production. Si vous ne savez pas comment accéder à votre répertoire d’origine, utilisez la commande ci-dessous.

cd ~/

Une fois que vous êtes dans le répertoire d’origine, exécutez la commande git clone avec l’adresse du dépôt que vous avez copiée depuis GitLab.

git clone [your-repository-url-here]

Après avoir cloné le dépôt, vous verrez un avertissement indiquant « il semble que vous ayez cloné un dépôt vide » C’est normal, car le dépôt est vide pour le moment.

Clonez votre dépôt GitLab vers votre environnement de production Kinsta.
Clonez votre dépôt GitLab vers votre environnement de production Kinsta.

Chez Kinsta, notre configuration Nginx sert le contenu à partir du dossier ~/public. Ainsi, vous devez supprimer le dossier ~/public actuel et renommer votre dossier de dépôt cloné en ~/public. Pour ce faire, exécutez les deux commandes ci-dessous.

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

Configurer le dépôt GitLab

Ensuite, utilisez la commande ci-dessous pour naviguer vers le dossier ~/public.

cd ~/public

Exécutez les deux commandes ci-dessous pour configurer votre dépôt GitLab. Veillez à spécifier votre adresse e-mail valide et un nom d’utilisateur associé à votre compte GitLab.

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

Installez WordPress avec WP-CLI

Maintenant que le repo GitLab a été cloné sur votre environnement de production Kinsta et configuré, installons WordPress. Vous pouvez installer WordPress manuellement en le téléchargeant depuis wordpress.org, ou vous pouvez l’installer avec WP-CLI. Pour cet exemple, nous allons utiliser WP-CLI pour installer WordPress avec la commande ci-dessous dans le dossier ~/public.

wp core download

Après avoir installé WordPress, votre dossier ~/public devrait ressembler à ceci :

Une nouvelle installation de WordPress avec les fichiers et répertoires principaux de WordPress.
Une nouvelle installation de WordPress avec les fichiers et répertoires principaux de WordPress.

Ensuite, allez sur la page Domaines de votre site dans MyKinsta et cliquez sur le lien Ouvrir l’URL pour visiter votre domaine principal.

Ouvrez le lien URL dans MyKinsta.
Ouvrez le lien URL dans MyKinsta.

Vous serez accueilli par le processus d’installation de WordPress en cinq minutes. Si vous n’êtes pas sûr de la configuration de WordPress, nous avons un guide approfondi ici.

Configurez la nouvelle installation de WordPress.
Configurez la nouvelle installation de WordPress.

Après l’installation de WordPress, vous devriez être en mesure de voir votre nouveau site WordPress en visitant votre domaine principal.

Une nouvelle installation de WordPress.
Une nouvelle installation de WordPress.

Configurer le pipeline CI/CD de GitLab

Ensuite, vous devrez mettre en place un fichier de configuration pour demander à GitLab de lancer des déploiements automatiques après la mise à jour de la branche principale du dépôt. Pour cela, assurez-vous que vous êtes dans le dossier ~/public de votre environnement de production Kinsta (exécutez cd ~/public pour y naviguer si nécessaire) et créez un nouveau fichier appelé .gitlab-ci.yml avec la commande ci-dessous.

touch .gitlab-ci.yml

Une fois le fichier créé, ajoutez le texte suivant au fichier. Vous pouvez soit éditer le fichier avec nano ou vim en ligne de commande, soit avec SFTP et un éditeur de texte ou de code. Si vous utilisez un client SFTP, assurez-vous d’activer les fichiers cachés afin de voir le fichier .gitlab-ci.yml.

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

Modifiez les paramètres url et script dans le bloc deploy_live; en remplaçant les valeurs en gras par les détails de votre site provenant de MyKinsta.

  • Remplacez your-primary-domain par le domaine primaire de votre site.
  • Remplacez ssh user@ip-address -p port-number par la commande du terminal SSH dans MyKinsta (Sites WordPress > nom de site > Info > SFTP/SSH).
  • Remplacez public-root par le chemin d’accès dans MyKinsta (Sites WordPress > Nom du site > Info > Détails sur l’environnement).
Chemin public et détails SSH dans MyKinsta.
Chemin public et détails SSH dans MyKinsta.

La section only: - main du fichier fait référence à la branche du dépôt qui déclenchera le processus CI/CD de GitLab. Avec cette configuration, les poussées vers la branche principale déclencheront un déploiement vers votre environnement de production Kinsta. Si vous souhaitez spécifier une autre branche pour déclencher le déploiement, n’hésitez pas à modifier la configuration.

Si vous souhaitez mettre en œuvre une granularité supplémentaire à la configuration pour tenir compte d’un environnement de mise à disposition, vous pouvez ajouter un bloc supplémentaire deploy_staging avec l’URL et les détails SSH de votre environnement de staging Kinsta.

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

Notez également la section only: - staging – cela signifie que pousser vers la branche staging initiera le processus CI/CD de GitLab. Vous pouvez ajuster cela si nécessaire pour déployer à partir de la branche de votre choix.

Commit initial sur GitLab

Maintenant que WordPress et le fichier de configuration de GitLab sont installés, faisons un premier commit sur GitLab. Nous allons créer une nouvelle branche appelée v0.1, commencer à suivre les fichiers dans le dépôt, commiter les changements, et pousser les changements vers GitLab sur la branche v0.1. Exécutez les commandes ci-dessous depuis ~/public pour déclencher le commit initial.

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

Si vous vérifiez votre dépôt dans GitLab, vous verrez maintenant les fichiers de votre livraison initiale.

Commit initial dans GitLab.
Commit initial dans GitLab.

Configurer l’environnement de staging Kinsta

L’étape suivante consiste à créer et à configurer un environnement de staging dans MyKinsta afin de disposer d’un endroit sûr pour tester des extensions, thèmes et codes sans affecter votre environnement de production.

Création d'un nouvel environnement de staging Kinsta dans MyKinsta.
Création d’un nouvel environnement de staging Kinsta dans MyKinsta.

Après avoir créé l’environnement de staging de votre site, connectez-vous en SSH à l’environnement de staging dans une nouvelle fenêtre de ligne de commande (gardez la fenêtre séparée pour votre environnement de production ouvert) et exécutez la commande ci-dessous pour vérifier les changements de code.

cd ~/public && git status

Vous devriez voir un message comme celui ci-dessous. Comme vous pouvez le voir, la branche est celle de la v0.1 créée précédemment. En outre, le fichier wp-config.php a été modifié. Cela se produit parce que Kinsta ajoute quelques lignes supplémentaires à wp-config.php lors de la création de l’environnement de staging.

Fichiers modifiés dans l'environnement de staging Kinsta.
Fichiers modifiés dans l’environnement de staging Kinsta.

Commit et déployer les changements en production

Enfin, apportons quelques changements à l’environnement de staging et poussons un nouveau commit vers l’environnement de production Kinsta en utilisant GitLab. Gardez à l’esprit que cette méthode contournera la fonction Pousser en production de Kinsta.

Pour cet exemple, installons l’extension Yoast SEO en utilisant WP-CLI avec la commande ci-dessous.

wp plugin install wordpress-seo

Après l’installation de l’extension Yoast SEO, exécutez les commandes ci-dessous pour faire un commit et pousser les changements vers la branche v0.1.

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

Enfin, passons à la branche principale, fusionnons v0.1 à main, et poussons main à GitLab avec les commandes ci-dessous. Ceci va provoquer le lancement par GitLab d’un processus de déploiement vers votre environnement Kinsta live en raison du paramètre only: - main dans le fichier de configuration de GitLab.

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

Dans GitLab, allez dans CI/CD > Jobs dans la colonne latérale de votre dépôt, et vous verrez la tache en cours d’exécution. Cette tache est GitLab déployant l’extension Yoast SEO à votre environnement de production Kinsta.

Tache active dans GitLab.
Tache active dans GitLab.

Une fois la tache terminée, revenez à la fenêtre de ligne de commande de votre environnement de production et exécutez wp plugin list dans cette fenêtre. Vous devriez voir wordpress-seo dans la liste. Il s’agit de l’extension Yoast SEO qui a été installée sur l’environnement de staging plus tôt.

L'extension Yoast SEO a été déployée via GitLab.
L’extension Yoast SEO a été déployée via GitLab.

Si vous êtes un développeur de thème ou d’extension qui travaille avec des sites Kinsta, la mise en place de déploiements automatiques via GitLab CI/CD peut vous aider à accélérer votre flux de travail tout en fournissant un contrôle de version.

Cet article vous a été utile ?