Plugins Jenkins Essentiels : Guide de Sélection et Configuration

Choisissez et configurez les plugins Jenkins essentiels pour Pipeline, SCM, builds, tests, notifications et identifiants.

Plugins Jenkins Essentiels : Guide de Sélection et Configuration

Les plugins Jenkins peuvent rendre votre serveur CI/CD utile ou fragile. La difficulté ne réside pas dans la recherche d'un plugin, mais dans le choix des quelques plugins Jenkins dont vos jobs ont réellement besoin et leur maintenance.

Ce guide couvre les catégories de plugins courantes, des exemples pratiques et les habitudes de maintenance qui évitent que les installations Jenkins riches en plugins ne deviennent difficiles à mettre à niveau.

Comprendre l'Écosystème des Plugins Jenkins

L'écosystème des plugins Jenkins est vaste et en constante évolution. Les plugins sont développés et maintenus par la communauté Jenkins et peuvent être catégorisés en fonction de leur fonctionnalité :

  • Intégration des Outils de Build : Plugins pour l'intégration avec des outils de build comme Maven, Gradle, Ant, etc.
  • Intégration de la Gestion de Code Source (SCM) : Plugins pour se connecter à Git, Subversion, Mercurial et autres systèmes SCM.
  • Frameworks de Test : Plugins pour exécuter et rapporter différents types de tests (unitaires, d'intégration, de sécurité, etc.).
  • Outils de Déploiement et de Release : Plugins pour déployer des applications dans différents environnements (par exemple, Docker, Kubernetes, plateformes cloud).
  • Notifications et Rapports : Plugins pour envoyer des notifications de statut de build (email, Slack, etc.) et générer des rapports.
  • Améliorations des Pipelines : Plugins qui ajoutent des fonctionnalités à Jenkins Pipeline, comme la visualisation Pipeline as Code (Jenkinsfile) et les bibliothèques partagées.
  • Sécurité et Contrôle d'Accès : Plugins pour renforcer la sécurité de Jenkins et gérer les permissions des utilisateurs.
  • Surveillance et Performance : Plugins pour surveiller Jenkins lui-même.

Installation et Gestion des Plugins

Avant de plonger dans des plugins spécifiques, il est important de comprendre le processus de base d'installation et de gestion dans Jenkins.

Accéder au Gestionnaire de Plugins

  1. Accédez à votre tableau de bord Jenkins.
  2. Cliquez sur Gérer Jenkins dans le menu de gauche.
  3. Sélectionnez Gérer les Plugins.

Installer des Plugins

Sur la page Gérer les Plugins, vous trouverez plusieurs onglets :

  • Mises à jour : Liste les mises à jour disponibles pour vos plugins installés.
  • Disponibles : Affiche tous les plugins disponibles à l'installation depuis le centre de mise à jour Jenkins.
  • Installés : Affiche les plugins actuellement installés sur votre instance Jenkins.
  • Avancé : Fournit des options pour configurer le centre de mise à jour, gérer les installations de plugins et télécharger des fichiers de plugins.

Pour installer un nouveau plugin :

  1. Allez dans l'onglet Disponibles.
  2. Recherchez le plugin souhaité par nom ou mot-clé.
  3. Cochez la case à côté du ou des plugins que vous souhaitez installer.
  4. Cliquez sur le bouton Installer sans redémarrage ou Télécharger maintenant et installer après redémarrage en bas de la page.

Astuce : Pour la plupart des plugins, Installer sans redémarrage est suffisant, et Jenkins les téléchargera et les installera automatiquement en arrière-plan. Si le plugin nécessite un redémarrage de Jenkins pour prendre effet, utilisez la deuxième option.

Mettre à Jour et Supprimer des Plugins

  • Mise à jour : Dans l'onglet Mises à jour, sélectionnez les plugins que vous souhaitez mettre à jour et cliquez sur Mettre à niveau les paquets sélectionnés. Sinon, cliquez sur Tout mettre à niveau.
  • Suppression : Dans l'onglet Installés, cochez la case à côté du plugin que vous souhaitez supprimer et cliquez sur Désinstaller.

Avertissement : La suppression d'un plugin peut casser des jobs existants qui en dépendent. Sauvegardez toujours votre configuration Jenkins avant d'effectuer des tâches importantes de gestion des plugins.

Plugins Essentiels pour les Scénarios CI/CD Courants

Voici quelques plugins incontournables classés par leurs cas d'utilisation typiques :

1. Pipeline as Code et Gestion des Workflows

Jenkins Pipeline est un plugin puissant qui vous permet de définir votre pipeline CI/CD sous forme de code, généralement dans un Jenkinsfile. Cela favorise le contrôle de version, la réutilisabilité et une meilleure visibilité de vos pipelines.

  • Pipeline : C'est le plugin principal qui permet les jobs Pipeline. Il est généralement installé par défaut dans les installations Jenkins modernes.
  • Pipeline : Pipeline Déclaratif : Améliore la syntaxe du Jenkinsfile avec une syntaxe plus structurée et opinionnée. Hautement recommandé pour les nouveaux pipelines.
  • Pipeline : Sécurité des Scripts : Gère les scripts Groovy utilisés dans les jobs Pipeline, vous permettant d'approuver ou de refuser des scripts pour des raisons de sécurité.
  • Pipeline : Étapes Utilitaires : Fournit des étapes utiles pour vos scripts Pipeline, telles que readJSON, writeJSON, zip, unzip et fileExists.

Exemple de Configuration (Jenkinsfile - Déclaratif) :

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Construction...' // Exemple d'étape
                // Ajoutez vos commandes de build ici (par exemple, mvn clean install)
            }
        }
        stage('Test') {
            steps {
                echo 'Test...' // Exemple d'étape
                // Ajoutez vos commandes de test ici (par exemple, mvn test)
            }
        }
        stage('Déploiement') {
            steps {
                echo 'Déploiement...' // Exemple d'étape
                // Ajoutez vos commandes de déploiement ici
            }
        }
    }
    post {
        always {
            echo 'Pipeline terminé.'
        }
        success {
            echo 'Pipeline réussi !'
        }
        failure {
            echo 'Pipeline échoué.'
        }
    }
}

2. Intégration de la Gestion de Code Source (SCM)

Pour déclencher des builds et récupérer le code, Jenkins doit s'intégrer à votre système SCM.

  • Plugin Git : Essentiel pour l'intégration avec les dépôts Git. Prend en charge le sondage SCM Git, l'extraction de code, etc.
  • Plugin Subversion : Pour les équipes utilisant encore Subversion.

Exemple de Configuration (Git dans un Pipeline) :

stage('Extraction') {
    steps {
        git branch: 'main', url: 'https://github.com/votre-nom-utilisateur/votre-depot.git'
    }
}

3. Outils de Build et Environnements

Ces plugins aident Jenkins à gérer et exécuter des builds pour différentes technologies.

  • Plugin d'Intégration Maven : Pour les projets utilisant Maven. Permet la configuration des versions et des objectifs Maven.
  • Plugin Gradle : Pour les projets utilisant Gradle.
  • Plugin NodeJS : Permet d'installer et de basculer facilement entre différentes versions de Node.js sur vos agents Jenkins.

Exemple de Configuration (Plugin NodeJS dans un Pipeline) :

pipeline {
    agent any
    tools {
        nodejs 'NodeJS 18.x' // Nom configuré dans la Configuration Globale des Outils
    }
    stages {
        stage('Installer les Dépendances') {
            steps {
                sh 'npm install'
            }
        }
        stage('Construire le Frontend') {
            steps {
                sh 'npm run build'
            }
        }
    }
}

Pour configurer des outils comme NodeJS ou Maven :

  1. Allez dans Gérer Jenkins -> Configuration Globale des Outils.
  2. Trouvez l'outil concerné (par exemple, NodeJS).
  3. Cliquez sur Ajouter NodeJS et configurez la méthode d'installation (par exemple, Installer automatiquement) et la version.
  4. Donnez-lui un nom descriptif (par exemple, NodeJS 18.x) que vous référencerez dans votre Jenkinsfile.

4. Tests et Rapports

Visualiser les résultats des tests est crucial pour comprendre la qualité du code et identifier les régressions.

  • Plugin JUnit : Analyse et affiche les résultats des tests à partir du format XML JUnit. La plupart des frameworks de test peuvent générer ce format.
  • Plugin Cobertura / Plugin JaCoCo : Pour les rapports de couverture de code (selon votre outil de build Java).

Exemple de Configuration (JUnit dans un Pipeline) :

stage('Test') {
    steps {
        // En supposant que vos tests produisent des résultats dans target/surefire-reports/
        junit 'target/surefire-reports/**/*.xml'
    }
}

Pour que cela fonctionne :

  1. Assurez-vous que votre outil de build (par exemple, le plugin Maven Surefire) est configuré pour générer des rapports XML JUnit.
  2. Ajoutez l'étape junit à votre pipeline après l'exécution des tests.

5. Notifications et Communication

Tenir votre équipe informée des statuts de build est vital.

  • Plugin d'Extension Email : Fournit des capacités de notification par email flexibles.
  • Plugin de Notification Slack : Intègre les builds Jenkins avec les canaux Slack.
  • Plugin de Notification Microsoft Teams : Intégration similaire pour Microsoft Teams.

Exemple de Configuration (Notification Slack dans un Pipeline) :

D'abord, configurez l'intégration Slack dans Gérer Jenkins -> Configurer le Système. Vous aurez besoin d'un jeton d'intégration d'application Slack.

post {
    success {
        slackSend channel: '#ci-cd', message: 'Build #${env.BUILD_NUMBER} réussi ! - ${env.JOB_NAME}'
    }
    failure {
        slackSend channel: '#ci-cd', color: 'danger', message: 'Build #${env.BUILD_NUMBER} échoué ! Consultez les logs : ${env.BUILD_URL}'
    }
}

6. Gestion des Artéfacts et Archivage

Stocker les sorties de build (artéfacts) pour une utilisation ou une inspection ultérieure.

  • Archiver les Artéfacts : Une étape Jenkins intégrée pour archiver les fichiers produits par un build.

Exemple de Configuration (Archivage d'Artéfacts dans un Pipeline) :

stage('Archiver les Artéfacts') {
    steps {
        archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
    }
}

Cette étape archive tous les fichiers .jar trouvés dans le répertoire target et active l'empreinte numérique, ce qui aide à suivre l'utilisation des artéfacts à travers les builds et les jobs.

7. Gestion de la Sécurité et des Identifiants

Gérer de manière sécurisée les informations sensibles comme les mots de passe, les clés API et les clés privées SSH est primordial.

  • Plugin Identifiants : Le plugin standard pour gérer les identifiants. Il fournit différents types d'identifiants (nom d'utilisateur/mot de passe, clés SSH, jetons, etc.).
  • Plugin de Liaison d'Identifiants : Permet de lier des identifiants à des variables d'environnement ou des fichiers dans vos étapes de build, garantissant que les données sensibles ne sont pas exposées dans les logs.

Exemple de Configuration (Utilisation d'Identifiants dans un Pipeline) :

  1. Ajouter des Identifiants : Allez dans Gérer Jenkins -> Gérer les Identifiants. Sous Magasins limités à Jenkins, cliquez sur le domaine (global). Cliquez sur Ajouter des Identifiants. Choisissez le type (par exemple, 'Nom d'utilisateur avec mot de passe'), remplissez les détails et donnez-lui un ID (par exemple, mes-identifiants-registry-docker).

  2. Utiliser dans le Pipeline :

    stage('Pousser vers le Registry Docker') {
        steps {
            withCredentials([usernamePassword(credentialsId: 'mes-identifiants-registry-docker', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
                sh 'printf "%s" "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin'
                sh 'docker push mon-registry/mon-image:latest'
            }
        }
    }
    

Meilleures Pratiques pour la Gestion des Plugins

  • Restez Minimal : Installez uniquement les plugins dont vous avez activement besoin. Chaque plugin ajoute une surcharge.
  • Révisez Régulièrement : Passez périodiquement en revue vos plugins installés. Supprimez ceux qui ne sont plus utilisés ou qui sont redondants.
  • Mettez à Jour Rapidement : Gardez vos plugins à jour pour bénéficier des corrections de bugs, des correctifs de sécurité et des nouvelles fonctionnalités. Cependant, testez les mises à jour dans une instance Jenkins de staging si possible.
  • Vérifiez la Compatibilité : Avant d'installer un nouveau plugin, vérifiez sa documentation pour la compatibilité avec votre version de Jenkins et d'autres plugins critiques.
  • Comprenez les Dépendances : Certains plugins dépendent d'autres. Le Gestionnaire de Plugins gère généralement cela, mais soyez conscient des conflits potentiels.
  • La Sécurité Avant Tout : Soyez prudent lors de l'installation de plugins provenant de sources non fiables. Utilisez uniquement des plugins provenant du centre de mise à jour officiel de Jenkins ou de sources réputées.

Point Clé à Retenir

Commencez par les plugins qui soutiennent vos workflows réels : Pipeline, SCM, outils de build, rapports de test, notifications et identifiants. Vérifiez l'état du plugin avant de l'installer, testez les mises à jour loin de la production quand vous le pouvez, et supprimez les plugins qu'aucun job actif n'utilise.