Aller au contenu principal

Introduction à Jenkins


Qu'est-ce que Jenkins ?

Jenkins est un serveur d'automatisation open source écrit en Java. Il permet d'automatiser les tâches répétitives du cycle de développement logiciel :

  • Build : Compilation du code
  • Test : Exécution des tests automatisés
  • Analyse : Qualité du code (SonarQube, linting)
  • Déploiement : Mise en production

CI/CD avec Jenkins

Intégration Continue (CI)

Déploiement Continu (CD)


Architecture

Composants principaux

Controller (Master)

Le controller Jenkins :

  • Gère l'interface web
  • Planifie les builds
  • Stocke la configuration
  • Distribue les tâches aux agents

Agents (Slaves)

Les agents exécutent les builds :

  • Peuvent être sur différentes plateformes
  • Se connectent au controller via JNLP ou SSH
  • Peuvent être statiques ou dynamiques (cloud)

Concepts clés

Job / Projet

Un job est une tâche automatisée. Types de jobs :

TypeDescriptionUsage
FreestyleConfiguration via UIJobs simples
PipelineCode Groovy (Jenkinsfile)CI/CD complexes
MultibranchUn pipeline par brancheProjets Git
FolderOrganisation des jobsStructure

Build

Un build est une exécution d'un job. Chaque build a :

  • Un numéro unique (#1, #2, ...)
  • Un statut (Success, Failure, Unstable, Aborted)
  • Des logs
  • Des artifacts (optionnel)

Workspace

Le workspace est le répertoire de travail où le code est cloné et où le build s'exécute.

/var/jenkins_home/workspace/
├── my-project/
│ ├── src/
│ ├── pom.xml
│ └── target/
└── another-project/

Artifact

Un artifact est un fichier produit par un build :

  • JAR/WAR Java
  • Binaires compilés
  • Images Docker
  • Rapports de test

Jenkins vs autres outils CI/CD

AspectJenkinsGitHub ActionsGitLab CICircleCI
HébergementSelf-hostedCloudCloud/SelfCloud
ConfigurationJenkinsfile/UIYAMLYAMLYAML
Plugins1800+ActionsIntégréOrbs
CoûtGratuitFreemiumFreemiumPayant
CourbeMoyenneFacileFacileFacile
Flexibilité⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Quand choisir Jenkins ?
  • Infrastructure on-premise requise
  • Besoin de personnalisation extrême
  • Intégrations spécifiques (legacy)
  • Contrôle total sur l'environnement

Workflow typique


Terminologie

TermeDescription
ControllerServeur principal Jenkins
AgentNoeud d'exécution des builds
JobTâche automatisée
BuildExécution d'un job
PipelineWorkflow CI/CD en code
StageÉtape d'un pipeline
StepAction dans un stage
WorkspaceRépertoire de travail
ArtifactFichier produit
PluginExtension Jenkins

Avantages de Jenkins

1. Open Source et gratuit

# Pas de licence à payer
# Communauté active
# Documentation abondante

2. Extensibilité

Plus de 1800 plugins pour :

  • Intégrations SCM (Git, SVN, Mercurial)
  • Build tools (Maven, Gradle, npm)
  • Cloud (AWS, Azure, GCP)
  • Containers (Docker, Kubernetes)
  • Notifications (Slack, Email, Teams)
  • Qualité (SonarQube, Checkmarx)

3. Pipeline as Code

// Jenkinsfile versionné avec le code
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
steps {
sh 'kubectl apply -f k8s/'
}
}
}
}

4. Scalabilité

  • Architecture distribuée master/agents
  • Agents dynamiques (Kubernetes, Docker, EC2)
  • Parallélisation des builds

Limites de Jenkins

LimiteMitigation
Interface datéeBlue Ocean plugin
Configuration complexeJenkins Configuration as Code
Maintenance serveurJenkins sur Kubernetes
Plugins parfois instablesVersions LTS
Groovy learning curveShared Libraries

Résumé

  • Jenkins est un serveur d'automatisation CI/CD open source
  • Architecture master/agent pour la scalabilité
  • Pipeline as Code avec Jenkinsfile
  • Écosystème riche de plugins
  • Idéal pour les environnements on-premise

← Table des matières | Installation →