0Pricing
Docker & DevOps Fundamentals · Leçon

Déploiement automatisé avec Jenkins

Créez un pipeline CI/CD dans Jenkins pour déployer vos conteneurs Docker dans un environnement cible.

Déploiement automatisé avec Jenkins est une leçon Docker & DevOps Fundamentals gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Docker & DevOps Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.

Introduction au déploiement automatisé

Bienvenue dans la dernière leçon consacrée à l’intégration et à la livraison continues avec Jenkins et Docker ! Aujourd’hui, nous nous concentrerons sur l’automatisation du déploiement de vos conteneurs Docker.

Le déploiement automatisé est le processus de mise en production ou dans des environnements de préproduction sans intervention manuelle. Il s’agit d’un élément essentiel de la livraison et du déploiement continus, qui garantit rapidité, cohérence et fiabilité.

Déploiement automatisé avec Jenkins — illustration 1

Pourquoi automatiser le déploiement ?

Le déploiement manuel d’applications peut être lent, sujet aux erreurs et incohérent. L’automatisation permet de relever ces défis :

  • Rapidité : déployer rapidement de nouvelles fonctionnalités ou corrections.
  • Fiabilité : réduire les erreurs humaines grâce à des processus standardisés.
  • Cohérence : garantir que chaque déploiement suit les mêmes étapes.
  • Efficacité : permettre aux développeurs de se concentrer sur le code plutôt que sur les tâches de déploiement.

Étapes de la chaîne de déploiement

Une chaîne Jenkins classique pour le déploiement Docker comprend plusieurs étapes clés :

  • Compilation : construire l’image Docker (comme dans les leçons précédentes).
  • Test : exécuter des tests automatisés sur l’image.
  • Envoi : envoyer l’image vers un registre Docker.
  • Déploiement : récupérer l’image depuis le registre et l’exécuter sur un serveur cible.
  • Vérification : confirmer que le nouveau déploiement fonctionne correctement.

Aujourd’hui, nous nous concentrerons sur les étapes « Déploiement » et « Vérification ».

Configurer l’environnement cible

Avant que Jenkins puisse effectuer le déploiement, votre serveur cible doit être prêt. Cela signifie généralement que :

  • Docker est installé : le serveur cible doit disposer de Docker Engine.
  • Accès SSH : Jenkins doit pouvoir accéder de manière sécurisée au serveur cible via SSH.
  • Autorisations de l’utilisateur : l’utilisateur SSH doit être autorisé à exécuter des commandes Docker.

Nous gérons généralement les identifiants SSH de manière sécurisée dans Jenkins.

Identifiants Jenkins pour SSH

Pour se connecter à un serveur distant, Jenkins utilise des identifiants SSH. Il s’agit généralement de paires composées d’un nom d’utilisateur SSH et d’une clé privée, stockées de manière sécurisée dans le gestionnaire d’identifiants de Jenkins.

Lors de la définition d’une chaîne, vous pouvez indiquer à Jenkins d’utiliser ces identifiants pour certaines étapes, afin de lui permettre d’exécuter des commandes sur votre serveur cible.

Exemple de script de déploiement basique

Voici un script shell simple qui pourrait être exécuté sur un serveur cible pour mettre à jour un conteneur Docker. Il arrête l’ancien conteneur, le supprime, récupère la nouvelle image, puis l’exécute.

APP_NAME et IMAGE_NAME seraient transmises sous forme de variables d’environnement.

#!/bin/bash

# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true

# Pull the new Docker image
docker pull ${IMAGE_NAME}

# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}

echo "Deployment of ${APP_NAME} complete!"

Intégrer une chaîne Jenkins

Dans un Jenkinsfile, vous pouvez utiliser le module d’extension sshPublisher ou une simple étape sh avec la transmission de l’agent SSH pour exécuter des commandes sur un hôte distant. Voici à quoi pourrait ressembler une étape de déploiement utilisant une étape sh basique, en supposant que SSH est configuré.

agent { label 'remote-deploy-host' } signifie que cette étape s’exécute sur le serveur cible.

stage('Deploy to Production') {
  agent { label 'remote-deploy-host' } 
  steps {
    withEnv([
      "APP_NAME=my-webapp",
      "IMAGE_NAME=myregistry/my-webapp:latest"
    ]) {
      sh '''
        docker stop ${APP_NAME} || true
        docker rm ${APP_NAME} || true
        docker pull ${IMAGE_NAME}
        docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
        echo "Deployment successful!"
      '''
    }
  }
}

Réaliser des mises à jour progressives

Pour effectuer des déploiements sans interruption de service, un simple arrêt-redémarrage ne suffit pas. Vous utiliseriez généralement une stratégie telle que :

  • Mise à jour progressive : remplacer progressivement les anciens conteneurs par les nouveaux, un par un, tout en garantissant la disponibilité du service.
  • Déploiement bleu-vert : déployer la nouvelle version (verte) à côté de l’ancienne (bleue), puis basculer le trafic.

Jenkins peut orchestrer ces opérations, mais des outils comme Docker Swarm ou Kubernetes offrent une prise en charge native de stratégies plus avancées.

Vérifier le déploiement

Après le déploiement, il est essentiel de vérifier que l’application fonctionne correctement. Cela peut comprendre :

  • Contrôles d’intégrité : de simples requêtes HTTP GET vers le point de contrôle d’intégrité de l’application.
  • Surveillance des journaux : vérifier les journaux du conteneur pour détecter d’éventuelles erreurs.
  • Tests d’intégration : exécuter rapidement un ensemble de tests sur la version nouvellement déployée.

Votre chaîne Jenkins peut inclure une étape « Vérification » pour automatiser ces contrôles.

Vérifiez vos connaissances

Examinez l’extrait de Jenkinsfile suivant correspondant à une étape de déploiement. Quel est l’objectif principal de docker stop ${APP_NAME} || true ?

Récapitulatif : déploiement automatisé

Excellent travail ! Vous avez appris à aborder le déploiement automatisé avec Jenkins et Docker.

  • Le déploiement automatisé garantit des mises en production rapides, fiables et cohérentes.
  • Les environnements cibles ont besoin de Docker et d’un accès SSH.
  • Jenkins utilise des identifiants sécurisés pour se connecter aux serveurs distants.
  • Les scripts de déploiement arrêtent généralement les anciens conteneurs, récupèrent les nouvelles images et démarrent les nouveaux conteneurs.
  • Les étapes de vérification sont essentielles pour confirmer la réussite du déploiement.

Cela conclut notre cours sur l’intégration et la livraison continues avec Jenkins et Docker. Continuez à vous entraîner pour maîtriser ces outils puissants !

Questions Fréquemment Posées

La leçon « Déploiement automatisé avec Jenkins » est-elle gratuite ?

Oui — le texte complet de « Déploiement automatisé avec Jenkins » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Docker & DevOps Fundamentals, passe à CoddyKit PRO. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Déploiement automatisé avec Jenkins » ?

Créez un pipeline CI/CD dans Jenkins pour déployer vos conteneurs Docker dans un environnement cible. Tu pratiques Docker & DevOps Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Docker & DevOps Fundamentals ?

Aucune expérience préalable n'est requise. Docker & DevOps Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Déploiement automatisé avec Jenkins » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Docker & DevOps Fundamentals ?

Oui. Chaque leçon Docker & DevOps Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Introduction à Jenkins
  2. Créer des images Docker avec Jenkins
  3. Déploiement automatisé avec Jenkins
  4. Pipeline Jenkins en tant que code avec Jenkinsfile
← Retour à Docker & DevOps Fundamentals