Introduction à Jenkins & CI/CD
Jenkins est l'outil d'automatisation de build le plus utilisé en DevOps. Il orchestre les pipelines CI/CD qui permettent de livrer du logiciel rapidement et en continu.
Build Automation — Automatisation du Build
Qu'est-ce que la Build Automation ?
Sans automatisation, chaque déploiement est manuel : récupérer le code, lancer les tests, builder, packager, déployer... une source d'erreurs et de lenteur.
La Build Automation automatise cette chaîne :
Code Source (Git)
│
▼
Tests unitaires ← exécutés automatiquement
│
▼
Compilation / Build
│
▼
Docker Image / JAR / artifact
│
▼
Push vers Registry (Nexus, ECR)
│
▼
Déploiement sur serveur
Un serveur dédié (Jenkins) exécute tout ça automatiquement à chaque commit.
CI/CD — Intégration et Déploiement Continus
Définitions
| Terme | Signification | Ce que ça fait |
|---|---|---|
| CI — Continuous Integration | Intégration Continue | Build + Tests + Merge automatiques |
| CD — Continuous Deployment | Déploiement Continu | Release + Déploiement automatiques |
Schéma CI/CD complet
Développeur → git commit → Git Repo
│
┌───────▼────────┐
│ CI │
│ - Build │
│ - Tests │
│ - Merge auto │
└───────┬────────┘
│
┌───────▼────────┐
│ CD │
│ - Release │
│ - Déploiement │
└───────┬────────┘
│
Serveur de production
La Build Automation est une composante du CI/CD — elle se situe dans la phase CI.
Jenkins — Présentation
Jenkins vs alternatives
| Outil | Type | Particularité |
|---|---|---|
| Jenkins | Self-hosted | Le plus populaire, très flexible, plugins riches |
| GitHub Actions | SaaS/Cloud | Intégré à GitHub, YAML, simple à démarrer |
| GitLab CI | Self-hosted/SaaS | Intégré à GitLab, .gitlab-ci.yml |
| Travis CI | SaaS | Simple, historiquement populaire |
| Bamboo | Self-hosted | Atlassian, intégré Jira/Bitbucket |
| TeamCity | Self-hosted | JetBrains, puissant pour Java |
Ce que Jenkins peut faire
- Exécuter les tests automatiquement
- Builder et packager l'application (JAR, ZIP, Docker Image)
- Publier l'artifact vers un registry (Nexus, ECR, Docker Hub)
- Déployer sur un serveur de staging ou production
- Envoyer des notifications (Slack, email) en cas d'échec
Architecture Jenkins
Développeurs
│ git push
▼
Git Repository (GitHub / GitLab)
│ webhook trigger
▼
┌────────────────────────────┐
│ Jenkins │
│ ┌─────────────────────┐ │
│ │ Jobs / Pipelines │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Plugins │ │
│ │ (Docker, Maven...) │ │
│ └─────────────────────┘ │
│ ┌─────────────────────┐ │
│ │ Build Tools │ │
│ │ (npm, Maven, Java) │ │
│ └─────────────────────┘ │
└────────────────────────────┘
│
▼
Docker Registry / Nexus / AWS ECR
│
▼
Serveur de déploiement
Plugins Jenkins
Les plugins étendent les fonctionnalités de Jenkins. Exemples :
| Plugin | Rôle |
|---|---|
| Docker | Construire et pousser des images Docker |
| Git / GitHub | Intégration avec les repos Git |
| Maven Integration | Builds Maven |
| Gradle | Builds Gradle |
| Nexus Artifact Uploader | Publier vers Nexus |
| AWS EC2 | Provisionner des agents Jenkins sur EC2 |
| Slack Notification | Envoyer des alertes Slack |
| Blue Ocean | Interface graphique moderne pour les pipelines |
Rôles dans Jenkins
Administrateur Jenkins
- Installe et configure Jenkins
- Installe les plugins nécessaires
- Configure les credentials (AWS, Docker Hub, Git)
- Configure les outils de build (Maven, npm, Java)
- Gère les permissions utilisateurs
- Maintient le serveur Jenkins
Utilisateur Jenkins
- Crée et configure des jobs
- Monitore les builds (logs, statuts)
- Déclenche des builds manuellement ou via triggers
À retenir
- Build Automation = automatiser toute la chaîne : test → build → package → deploy
- CI = Continuous Integration : build + tests + merge automatiques
- CD = Continuous Deployment : release + déploiement automatiques
- Jenkins = l'outil CI/CD open-source le plus populaire, self-hosted, extensible par plugins
- Jenkins s'intègre avec Docker, Nexus, AWS, GitHub, GitLab, Slack, etc.
- Rôles : Administrateur (gère Jenkins) vs Utilisateur (crée les jobs)