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 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.
Sélectionnez l’option Projet vierge, et remplissez les champs Nom du projet et Slug du projet.
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 à.
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.
Faites défiler vers le bas et cliquez sur le bouton Ajouter une clé SSH.
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 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.
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.
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.
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.
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 :
Ensuite, allez sur la page Domaines de votre site dans MyKinsta et cliquez sur le lien Ouvrir l’URL pour visiter votre domaine principal.
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.
Après l’installation de WordPress, vous devriez être en mesure de voir votre nouveau site WordPress en visitant votre domaine principal.
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).
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.
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.
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.
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.
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.
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.