Definition
Jenkins est le serveur d'automatisation CI/CD open source le plus deploye au monde. Cree en 2011 (fork de Hudson), il permet d'automatiser le build, le test et le deploiement de n'importe quel projet logiciel grace a son ecosysteme de plus de 1800 plugins.
Jenkins est auto-heberge (on-premise) et offre un controle total sur le pipeline, ce qui en fait le choix des grandes entreprises avec des exigences de securite strictes.
Pipeline as Code (Jenkinsfile)
pipeline {
agent any
environment {
NODE_VERSION = '22'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Install') {
steps {
sh 'npm ci'
}
}
stage('Lint & Type Check') {
parallel {
stage('Lint') { steps { sh 'npm run lint' } }
stage('Types') { steps { sh 'npm run typecheck' } }
}
}
stage('Test') {
steps {
sh 'npm test -- --coverage'
}
post {
always {
junit 'test-results/*.xml'
publishHTML target: [reportDir: 'coverage']
}
}
}
stage('Build') {
steps {
sh 'npm run build'
}
}
stage('Deploy') {
when { branch 'main' }
steps {
sh './scripts/deploy.sh'
}
}
}
post {
failure {
slackSend channel: '#builds', message: "Build FAILED: ${env.JOB_NAME}"
}
}
}
Architecture
- Controller : serveur principal qui orchestre les pipelines
- Agents : machines qui executent les builds (Linux, Mac, Windows, Docker)
- Plugins : extensions pour tout (Git, Docker, Slack, AWS, etc.)
Jenkins vs alternatives modernes
| Jenkins | GitHub Actions | GitLab CI | |
|---|---|---|---|
| Hebergement | Self-hosted | SaaS | SaaS/Self-hosted |
| Configuration | Jenkinsfile (Groovy) | YAML | YAML |
| Plugins | 1800+ | Marketplace | Built-in |
| Maintenance | Elevee | Zero | Faible |
| Cout | Gratuit + infra | Gratuit (2000 min/mois) | Gratuit (400 min/mois) |
| Cas ideal | Enterprise, on-premise | GitHub repos | GitLab repos |