Retour aux réalisations

CI/CD avec GitLab

2023
CI/CD
GitLab
Automatisation
DevOps

Environnement

GitLab, CI/CD, Docusaurus, Linux

Technologies

YAML, Shell, Git, JavaScript

Automatisation

Pipelines, Jobs, Stages, Déploiement continu

Avantages obtenus

  • Déploiement automatisé à chaque modification
  • Réduction des erreurs humaines dans le processus de déploiement
  • Gain de temps considérable pour l'avancement du projet
  • Amélioration des connaissances en DevOps et GitLab

Présentation du projet

Après avoir finalisé mon projet d'hébergement de site web, j'ai entrepris l'automatisation du déploiement avec GitLab CI/CD. Cette solution me permet d'éviter l'utilisation répétitive de lignes de commande pour mettre à jour mon site à chaque modification effectuée sur une de mes pages.

Ce projet représente un gain de temps considérable pour l'avancement de mon travail, tout en enrichissant mes connaissances sur GitLab et les pratiques DevOps modernes. J'ai pu explorer en profondeur les fonctionnalités de GitLab, notamment le commit de fichiers/dossiers pour la sauvegarde du projet, le partage avec d'autres collaborateurs, et surtout l'automatisation des tâches répétitives.

Défis techniques

Configuration du fichier YAML

Créer et configurer correctement le fichier .gitlab-ci.yml pour définir les étapes du pipeline CI/CD.

Solution mise en œuvre

J'ai étudié la documentation de GitLab CI/CD et analysé des exemples de configurations pour comprendre la structure du fichier YAML. J'ai ensuite créé un fichier .gitlab-ci.yml adapté à mon projet Docusaurus, en définissant les stages appropriés (build, test, deploy) et les jobs correspondants.

Configuration des runners

Configurer les runners GitLab pour exécuter les jobs définis dans le pipeline CI/CD.

Solution mise en œuvre

J'ai utilisé les runners partagés fournis par GitLab.com pour exécuter mes jobs. J'ai configuré les tags appropriés dans mon fichier .gitlab-ci.yml pour s'assurer que les jobs sont exécutés sur les runners disposant des capacités nécessaires pour mon projet.

Gestion des secrets et variables d'environnement

Sécuriser les informations sensibles (comme les clés d'accès) tout en les rendant disponibles pour le pipeline CI/CD.

Solution mise en œuvre

J'ai utilisé les variables CI/CD de GitLab pour stocker les informations sensibles. Ces variables sont masquées dans les logs et peuvent être configurées au niveau du projet ou du groupe. J'ai défini les variables nécessaires pour l'authentification et la configuration de mon environnement de déploiement.

Fonctionnement de l'automatisation avec GitLab CI/CD

1

Création du fichier .gitlab-ci.yml

Le fichier .gitlab-ci.yml contient des instructions pour GitLab sur les tâches à exécuter. Chaque tâche est définie sous forme de job, et les jobs sont regroupés en stages. Par exemple, vous pouvez avoir des stages comme build, test, et deploy.

stages: - build - test - deploy build-job: stage: build script: - npm install - npm run build artifacts: paths: - build/
2

Définition des stages et des jobs

Stages : Ils définissent les étapes principales du processus CI/CD. Par exemple, build pour compiler le projet, test pour exécuter les tests, et deploy pour déployer l'application.

Jobs : Ils définissent les actions spécifiques à exécuter dans chaque stage. Chaque job peut contenir des scripts shell qui s'exécutent dans l'ordre défini.

3

Déclenchement des pipelines

Chaque fois qu'un commit est poussé dans le dépôt, GitLab déclenche automatiquement un pipeline CI/CD. Le pipeline passe par chaque stage et exécute les jobs définis dans le fichier .gitlab-ci.yml.

4

Exécution des scripts

Les scripts définis dans chaque job sont exécutés. Par exemple, dans le job build, le script installe les dépendances et compile le projet. Dans le job test, les tests unitaires sont exécutés pour vérifier que le code fonctionne correctement. Enfin, dans le job deploy, le site est déployé.

5

Conditions et restrictions

Vous pouvez spécifier des conditions pour les jobs. Par exemple, le job deploy peut être configuré pour s'exécuter uniquement sur la branche main. Cela permet de contrôler finement quand et comment chaque job doit être exécuté.

deploy-job: stage: deploy script: - npm run deploy only: - main # Ce job ne s'exécute que sur la branche main

Avantages de l'utilisation de GitLab CI/CD

Automatisation

Plus besoin d'exécuter manuellement les commandes pour construire, tester et déployer votre site. Le processus est entièrement automatisé, ce qui permet de gagner un temps précieux.

Consistance

Les mêmes étapes sont suivies à chaque déploiement, réduisant ainsi les risques d'erreurs humaines. Chaque déploiement est identique, ce qui garantit la fiabilité du processus.

Intégration continue

Chaque modification est immédiatement testée et déployée, assurant une livraison continue et rapide des mises à jour. Cela permet de détecter et de corriger rapidement les problèmes.

Collaboration

Le fichier .gitlab-ci.yml peut être partagé avec l'équipe, permettant à tous les membres de suivre le même processus CI/CD. Cela facilite la collaboration et standardise les pratiques.

Compétences acquises

Configuration de pipelines CI/CD

Maîtrise de la création et configuration de pipelines d'intégration et de déploiement continus

Scripting YAML

Création et modification de fichiers de configuration YAML pour définir les workflows d'automatisation

Gestion des environnements

Configuration des variables d'environnement et gestion des secrets dans un contexte CI/CD

Pratiques DevOps

Application des principes DevOps pour améliorer l'efficacité du développement et du déploiement

Conclusion

L'utilisation de GitLab CI/CD pour l'automatisation de mon site Docusaurus m'a permis de gagner en efficacité et en qualité dans le déploiement de mes mises à jour. Cette expérience m'a non seulement fait économiser un temps précieux, mais m'a également permis d'approfondir mes compétences en DevOps.

Les connaissances acquises lors de ce projet sont directement applicables à d'autres projets de développement et constituent une base solide pour des pratiques d'automatisation plus avancées. La maîtrise des outils CI/CD comme GitLab est devenue essentielle dans le domaine du développement logiciel moderne, et ce projet m'a permis de renforcer cette compétence clé pour ma carrière en DevOps.