Intégration et déploiement continus (CI/CD)

Comprendre les principes de l’intĂ©gration continue (CI) et du dĂ©ploiement continu (CD), ainsi que les outils permettant de les automatiser.

Module 3 : Intégration et déploiement continus (CI/CD)


3.1. Les bases de CI/CD

Objectif : Comprendre les principes de l’intĂ©gration continue (CI) et du dĂ©ploiement continu (CD), ainsi que les outils permettant de les automatiser.


Cours : Concepts fondamentaux de CI/CD

1. Intégration continue (CI) :
  • DĂ©finition : L’intĂ©gration continue consiste Ă  automatiser l’intĂ©gration du code des dĂ©veloppeurs dans une branche commune (souvent main ou develop). Chaque modification est testĂ©e pour vĂ©rifier qu’elle fonctionne correctement.
  • Objectifs :
    • Identifier rapidement les bugs.
    • Maintenir un code toujours fonctionnel.
  • Processus typique :
    • DĂ©clenchement par un push sur le dĂ©pĂŽt.
    • Compilation et tests automatisĂ©s.
2. Déploiement continu (CD) :
  • DĂ©finition : Le dĂ©ploiement continu garantit que chaque version testĂ©e est automatiquement dĂ©ployĂ©e sur un environnement (staging, production).
  • Objectifs :
    • RĂ©duire le temps entre le dĂ©veloppement et la mise en production.
    • Automatiser les processus de dĂ©ploiement pour Ă©viter les erreurs humaines.
  • Pipeline typique :
    • Tests d’intĂ©gration.
    • Construction d’artefacts (exemple : images Docker).
    • DĂ©ploiement automatisĂ©.
3. Outils populaires :
  • GitHub Actions : Automatisation des workflows depuis GitHub.
  • GitLab CI/CD : Pipelines intĂ©grĂ©s Ă  GitLab.
  • Jenkins : Plateforme CI/CD trĂšs personnalisable.
  • CircleCI et TravisCI : Outils dĂ©diĂ©s Ă  la CI/CD dans le cloud.

Exercice pratique 1 : Configurer un pipeline CI/CD basique avec GitHub Actions

Scénario : Vous allez mettre en place un pipeline CI/CD pour TaskManagerPro qui :

  • ExĂ©cute des tests unitaires.
  • Construit une image Docker.
  • DĂ©ploie automatiquement sur un environnement staging.
Étape 1 : CrĂ©er un fichier de workflow GitHub Actions
  1. Dans le dépÎt TaskManagerPro, créez le répertoire .github/workflows/ :
    mkdir -p .github/workflows
  2. Créez un fichier ci-cd.yml dans ce répertoire :
    nano .github/workflows/ci-cd.yml
  3. Ajoutez le contenu suivant pour définir le pipeline :
    name: CI/CD Pipeline on: push: branches: - develop jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: npm install - name: Run tests run: npm test docker: runs-on: ubuntu-latest needs: build steps: - name: Checkout code uses: actions/checkout@v3 - name: Build Docker image run: | docker build -t taskmanagerpro . - name: Push Docker image run: | echo "Docker image pushed!" # Ajouter des commandes pour pousser sur un registre si besoin. deploy: runs-on: ubuntu-latest needs: docker steps: - name: Deploy to Staging run: | echo "Déploiement en cours..." # Ajouter les commandes de déploiement ici.
Étape 2 : Tester le pipeline
  • Poussez vos modifications sur la branche develop :
    git add .github/workflows/ci-cd.yml git commit -m "Ajout du pipeline CI/CD" git push origin develop
  • VĂ©rifiez dans l’onglet Actions sur GitHub que le pipeline s’exĂ©cute correctement.

3.2. Amélioration et déploiement automatisé

1. Ajouter des artefacts Docker :
  • Modifiez le workflow pour pousser l’image Docker dans un registre (par exemple, Docker Hub ou Amazon ECR).
  • Exemple de modification dans l’étape Push Docker image :
    - name: Log in to Docker Hub run: echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - name: Push Docker image run: | docker tag taskmanagerpro $DOCKER_USERNAME/taskmanagerpro:latest docker push $DOCKER_USERNAME/taskmanagerpro:latest
2. Automatiser le déploiement sur un serveur :
  • Installez un outil comme Ansible ou utilisez des commandes SSH pour dĂ©ployer automatiquement l’application.
  • Exemple d’étape dans le workflow :
    - name: Deploy to server run: | ssh user@server_ip "docker pull $DOCKER_USERNAME/taskmanagerpro:latest && docker run -d -p 80:3000 $DOCKER_USERNAME/taskmanagerpro:latest"

Exercice pratique 2 : Pipeline complet pour TaskManagerPro

  1. Ajoutez un déploiement sur staging :

    • Configurez l’accĂšs au serveur de staging.
    • Assurez-vous que Docker est installĂ© et configurĂ© sur le serveur.
  2. Automatisez les tests :

    • Ajoutez des tests end-to-end Ă  votre pipeline pour garantir la stabilitĂ© de l’application.
  3. Optimisez les notifications :

    • IntĂ©grez des notifications (par exemple, Slack ou e-mail) pour informer l’équipe des rĂ©sultats du pipeline.

📘 Quiz : Teste tes connaissances !

đŸ–„ïž Terminal Trainer : Pratique tes commandes !