Le Pipeline as Code est le paradigme central de Jenkins moderne. Le pipeline est décrit dans un Jenkinsfile Groovy versionné avec le code, ce qui le rend reproductible, auditable et partageable.


Notes détaillées

NoteContenu
Jenkinsfile déclaratifStructure complète : agent, environment, options, parameters, stages, post, variables automatiques
Directives essentielleswhen, triggers, input, parallel, stash/unstash, retry, timeout
Shared LibrariesFactoriser la logique commune entre pipelines : vars/, src/, resources/, @Library
Bonnes pratiques PipelineSécurité, performance, organisation, fiabilité, outils complémentaires

Flux CI/CD type

Git Push / PR
      ↓
  Webhook → Jenkins
      ↓
  Checkout
      ↓
  ┌────────────────────────────────┐
  │  Parallel :                    │
  │  Compile | Lint | Unit Tests   │
  └────────────────────────────────┘
      ↓
  SonarQube (Quality Gate)
      ↓
  Package → Build Image Docker
      ↓
  Push Registry
      ↓
  Deploy DEV (auto)
      ↓
  Integration Tests
      ↓
  [input gate] → Deploy PROD
      ↓
  Smoke Tests → Notify Slack

Syntaxe minimale

pipeline {
    agent any
    stages {
        stage('Build') {
            steps { sh 'mvn clean package' }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
                junit '**/target/surefire-reports/*.xml'
            }
        }
    }
    post {
        failure { slackSend channel: '#ci', color: 'danger', message: "❌ ${env.JOB_NAME} #${env.BUILD_NUMBER}" }
        always  { cleanWs() }
    }
}

Déclaratif vs Scriptable

DéclaratifScriptable
Syntaxepipeline { ... }node { ... }
Lisibilité✅ Très lisible⚠️ Verbeux
FlexibilitéLimitée (utiliser script {} pour le Groovy libre)Totale
ValidationVérifiée avant exécutionErreurs à l’exécution
RecommandationÀ utiliser par défautPour les cas avancés uniquement

En relation avec