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
- Dans le dépÎt TaskManagerPro, créez le répertoire
.github/workflows/ :
mkdir -p .github/workflows
- Créez un fichier
ci-cd.yml dans ce répertoire :
nano .github/workflows/ci-cd.yml
- 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
-
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.
-
Automatisez les tests :
- Ajoutez des tests end-to-end Ă votre pipeline pour garantir la stabilitĂ© de lâapplication.
-
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 !