Jenkins suit une architecture Master/Agent (renommée Controller/Agent depuis Jenkins 2.x). Le Controller orchestre, les Agents exécutent.
Le Controller (anciennement Master)
C’est le cerveau de Jenkins. Il ne doit pas exécuter de builds en production.
| Rôle | Détail |
|---|---|
| Interface Web | UI sur le port 8080, API REST sur /api/json |
| Ordonnanceur | Distribue les builds dans la Build Queue vers les agents |
| Gestionnaire d’état | Stocke la configuration, l’historique, les artefacts dans JENKINS_HOME |
| Gestionnaire de plugins | Installe, met à jour, active les plugins |
| Gestionnaire de credentials | Coffre-fort chiffré pour les secrets (tokens, mots de passe, clés SSH) |
JENKINS_HOME/
├── config.xml ← configuration globale
├── credentials.xml ← secrets chiffrés
├── jobs/ ← configuration et historique de chaque job
│ └── mon-job/
│ ├── config.xml
│ └── builds/
├── plugins/ ← plugins installés (.jpi/.hpi)
├── nodes/ ← configuration des agents
└── workspace/ ← (à éviter sur le Controller)
Les Agents (Nodes)
Machines dédiées à l’exécution des builds. Le Controller les contacte via SSH, JNLP ou Docker.
| Concept | Définition |
|---|---|
| Executor | Thread de build sur un agent — un agent peut en avoir plusieurs en parallèle |
| Label | Tag appliqué à un agent pour le cibler dans un pipeline (agent { label 'linux' }) |
| Workspace | Répertoire dédié à chaque build sur l’agent |
| Built-in node | Agent intégré au Controller (désactiver ses executors en production) |
Les Jobs (Projets)
Unité de travail configurée pour automatiser une tâche.
| Type | Usage |
|---|---|
| Freestyle | Configuration via l’UI, simple, limité |
| Pipeline | Jenkinsfile Groovy — la méthode recommandée |
| Multibranch Pipeline | Pipeline automatique pour chaque branche d’un dépôt Git |
| Folder | Regroupement logique de jobs (souvent par équipe ou service) |
| Organization Folder | Scanne une org GitHub/GitLab et crée automatiquement les Multibranch Pipelines |
Build Queue et Executors
Commit → Webhook → Controller
↓
Build Queue (file d'attente)
↓ (agent disponible avec le bon label)
Agent Executor → Build
↓
Artefacts → Controller (archivage)
- Build Queue : liste des builds en attente d’un executor libre
- Executor : configuré sur chaque node (
Manage Nodes → Configure → # of executors) - Throttle : limiter le parallélisme via le plugin Throttle Concurrent Builds
Plugins — rôle dans l’architecture
Jenkins sans plugins ne fait presque rien. Tout est plugin :
| Catégorie | Plugin clé | Rôle |
|---|---|---|
| SCM | git | Cloner des dépôts Git |
| Pipeline | workflow-aggregator | Support Jenkinsfile |
| Credentials | credentials-binding | Injecter les secrets dans les builds |
| Notifications | slack, email-ext | Alertes build |
| Qualité | sonarqube | Analyse statique |
| Containers | docker-workflow | Builds dans Docker |
| Kubernetes | kubernetes | Agents dynamiques sur K8s |
En relation avec
- Architecture — Vue d’ensemble — hub architecture
- Agents et nœuds — configuration détaillée des agents
- Credentials et sécurité — gestion des secrets dans le Controller