Wesentliche Jenkins-Plugins: Auswahl- und Konfigurationsleitfaden

Wählen und konfigurieren Sie wesentliche Jenkins-Plugins für Pipeline, SCM, Builds, Tests, Benachrichtigungen und Anmeldeinformationen.

Wesentliche Jenkins-Plugins: Auswahl- und Konfigurationsleitfaden

Jenkins-Plugins können Ihren CI/CD-Server nützlich oder fragil machen. Die Herausforderung besteht nicht darin, ein Plugin zu finden, sondern darin, die wenigen Jenkins-Plugins auszuwählen, die Ihre Jobs tatsächlich benötigen, und sie gewartet zu halten.

Dieser Leitfaden behandelt gängige Plugin-Kategorien, praktische Beispiele und die Wartungsgewohnheiten, die plugin-lastige Jenkins-Installationen davor bewahren, schwer aktualisierbar zu werden.

Das Jenkins-Plugin-Ökosystem verstehen

Das Jenkins-Plugin-Ökosystem ist riesig und entwickelt sich ständig weiter. Plugins werden von der Jenkins-Community entwickelt und gewartet und können basierend auf ihrer Funktionalität kategorisiert werden:

  • Integration von Build-Tools: Plugins zur Integration mit Build-Tools wie Maven, Gradle, Ant usw.
  • Integration von Quellcodeverwaltung (SCM): Plugins zur Verbindung mit Git, Subversion, Mercurial und anderen SCM-Systemen.
  • Test-Frameworks: Plugins zum Ausführen und Berichten über verschiedene Testarten (Unit-, Integrations-, Sicherheitstests usw.).
  • Bereitstellungs- und Release-Tools: Plugins zum Bereitstellen von Anwendungen in verschiedenen Umgebungen (z. B. Docker, Kubernetes, Cloud-Plattformen).
  • Benachrichtigungen und Berichte: Plugins zum Senden von Build-Status-Benachrichtigungen (E-Mail, Slack usw.) und zum Generieren von Berichten.
  • Pipeline-Erweiterungen: Plugins, die Funktionen zur Jenkins-Pipeline hinzufügen, wie z. B. Pipeline as Code (Jenkinsfile)-Visualisierung und gemeinsame Bibliotheken.
  • Sicherheit und Zugriffskontrolle: Plugins zur Verbesserung der Jenkins-Sicherheit und Verwaltung von Benutzerberechtigungen.
  • Überwachung und Leistung: Plugins zur Überwachung von Jenkins selbst.

Plugin-Installation und -Verwaltung

Bevor wir uns mit spezifischen Plugins befassen, ist es wichtig, den grundlegenden Prozess der Installation und Verwaltung innerhalb von Jenkins zu verstehen.

Zugriff auf den Plugin-Manager

  1. Navigieren Sie zu Ihrem Jenkins-Dashboard.
  2. Klicken Sie im linken Menü auf Jenkins verwalten.
  3. Wählen Sie Plugins verwalten.

Plugins installieren

Auf der Seite Plugins verwalten finden Sie mehrere Registerkarten:

  • Updates: Listet verfügbare Updates für Ihre installierten Plugins auf.
  • Verfügbar: Zeigt alle Plugins an, die zur Installation aus dem Jenkins-Update-Center verfügbar sind.
  • Installiert: Zeigt die derzeit auf Ihrer Jenkins-Instanz installierten Plugins an.
  • Erweitert: Bietet Optionen zum Konfigurieren des Update-Centers, Verwalten von Plugin-Installationen und Hochladen von Plugin-Dateien.

Um ein neues Plugin zu installieren:

  1. Gehen Sie zur Registerkarte Verfügbar.
  2. Suchen Sie nach dem gewünschten Plugin nach Namen oder Stichwort.
  3. Aktivieren Sie das Kontrollkästchen neben dem/den Plugin(s), das/die Sie installieren möchten.
  4. Klicken Sie unten auf der Seite auf die Schaltfläche Ohne Neustart installieren oder Jetzt herunterladen und nach Neustart installieren.

Tipp: Für die meisten Plugins ist Ohne Neustart installieren ausreichend, und Jenkins lädt sie automatisch im Hintergrund herunter und installiert sie. Wenn das Plugin einen Jenkins-Neustart erfordert, um wirksam zu werden, verwenden Sie die zweite Option.

Plugins aktualisieren und entfernen

  • Aktualisieren: Wählen Sie auf der Registerkarte Updates die Plugins aus, die Sie aktualisieren möchten, und klicken Sie auf Ausgewählte Pakete aktualisieren. Alternativ klicken Sie auf Alle aktualisieren.
  • Entfernen: Aktivieren Sie auf der Registerkarte Installiert das Kontrollkästchen neben dem Plugin, das Sie entfernen möchten, und klicken Sie auf Deinstallieren.

Warnung: Das Entfernen eines Plugins kann vorhandene Jobs beschädigen, die davon abhängen. Sichern Sie immer Ihre Jenkins-Konfiguration, bevor Sie wichtige Plugin-Verwaltungsaufgaben durchführen.

Wesentliche Plugins für gängige CI/CD-Szenarien

Hier sind einige unverzichtbare Plugins, kategorisiert nach ihren typischen Anwendungsfällen:

1. Pipeline as Code & Workflow-Management

Jenkins Pipeline ist ein leistungsstarkes Plugin, mit dem Sie Ihre CI/CD-Pipeline als Code definieren können, typischerweise in einer Jenkinsfile. Dies fördert Versionskontrolle, Wiederverwendbarkeit und bessere Sichtbarkeit Ihrer Pipelines.

  • Pipeline: Dies ist das Kern-Plugin, das Pipeline-Jobs ermöglicht. Es ist normalerweise standardmäßig in modernen Jenkins-Installationen installiert.
  • Pipeline: Deklarative Pipeline: Erweitert die Jenkinsfile-Syntax um eine strukturiertere, meinungsstärkere Syntax. Sehr empfehlenswert für neue Pipelines.
  • Pipeline: Skriptsicherheit: Verwaltet Groovy-Skripte, die in Pipeline-Jobs verwendet werden, und ermöglicht es Ihnen, Skripte aus Sicherheitsgründen zu genehmigen oder abzulehnen.
  • Pipeline-Dienstprogrammschritte: Bietet nützliche Schritte für Ihre Pipeline-Skripte, wie readJSON, writeJSON, zip, unzip und fileExists.

Konfigurationsbeispiel (Jenkinsfile - Deklarativ):

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...' // Beispielschritt
                // Fügen Sie hier Ihre Build-Befehle ein (z. B. mvn clean install)
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...' // Beispielschritt
                // Fügen Sie hier Ihre Testbefehle ein (z. B. mvn test)
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...' // Beispielschritt
                // Fügen Sie hier Ihre Bereitstellungsbefehle ein
            }
        }
    }
    post {
        always {
            echo 'Pipeline finished.'
        }
        success {
            echo 'Pipeline succeeded!'
        }
        failure {
            echo 'Pipeline failed.'
        }
    }
}

2. Integration der Quellcodeverwaltung (SCM)

Um Builds auszulösen und Code abzurufen, muss Jenkins in Ihr SCM-System integriert werden.

  • Git-Plugin: Unverzichtbar für die Integration mit Git-Repositories. Unterstützt Git-SCM-Polling, Auschecken von Code und mehr.
  • Subversion-Plugin: Für Teams, die noch Subversion verwenden.

Konfigurationsbeispiel (Git in einer Pipeline):

stage('Checkout') {
    steps {
        git branch: 'main', url: 'https://github.com/your-username/your-repo.git'
    }
}

3. Build-Tools und Umgebungen

Diese Plugins helfen Jenkins, Builds für verschiedene Technologien zu verwalten und auszuführen.

  • Maven Integration plugin: Für Projekte, die Maven verwenden. Ermöglicht die Konfiguration von Maven-Versionen und -Zielen.
  • Gradle Plugin: Für Projekte, die Gradle verwenden.
  • NodeJS Plugin: Ermöglicht es Ihnen, einfach verschiedene Node.js-Versionen auf Ihren Jenkins-Agents zu installieren und zwischen ihnen zu wechseln.

Konfigurationsbeispiel (NodeJS Plugin in Pipeline):

pipeline {
    agent any
    tools {
        nodejs 'NodeJS 18.x' // Name, der in der globalen Tool-Konfiguration konfiguriert wurde
    }
    stages {
        stage('Install Dependencies') {
            steps {
                sh 'npm install'
            }
        }
        stage('Build Frontend') {
            steps {
                sh 'npm run build'
            }
        }
    }
}

Um Tools wie NodeJS oder Maven zu konfigurieren:

  1. Gehen Sie zu Jenkins verwalten -> Globale Tool-Konfiguration.
  2. Finden Sie das entsprechende Tool (z. B. NodeJS).
  3. Klicken Sie auf NodeJS hinzufügen und konfigurieren Sie die Installationsmethode (z. B. Automatisch installieren) und die Version.
  4. Geben Sie ihm einen beschreibenden Namen (z. B. NodeJS 18.x), auf den Sie in Ihrer Jenkinsfile verweisen werden.

4. Testen und Berichterstattung

Die Visualisierung von Testergebnissen ist entscheidend, um die Codequalität zu verstehen und Regressionen zu identifizieren.

  • JUnit Plugin: Analysiert und zeigt Testergebnisse aus dem JUnit-XML-Format an. Die meisten Test-Frameworks können dieses Format generieren.
  • Cobertura Plugin / JaCoCo Plugin: Für Codeabdeckungsberichte (abhängig von Ihrem Java-Build-Tool).

Konfigurationsbeispiel (JUnit in Pipeline):

stage('Test') {
    steps {
        // Angenommen, Ihre Tests erzeugen Ergebnisse in target/surefire-reports/
        junit 'target/surefire-reports/**/*.xml'
    }
}

Damit dies funktioniert:

  1. Stellen Sie sicher, dass Ihr Build-Tool (z. B. Maven Surefire Plugin) so konfiguriert ist, dass es JUnit-XML-Berichte ausgibt.
  2. Fügen Sie den junit-Schritt nach der Testausführung zu Ihrer Pipeline hinzu.

5. Benachrichtigungen und Kommunikation

Es ist wichtig, Ihr Team über Build-Status zu informieren.

  • Email Extension Plugin: Bietet flexible E-Mail-Benachrichtigungsfunktionen.
  • Slack Notification Plugin: Integriert Jenkins-Builds mit Slack-Kanälen.
  • Microsoft Teams Notification Plugin: Ähnliche Integration für Microsoft Teams.

Konfigurationsbeispiel (Slack-Benachrichtigung in Pipeline):

Konfigurieren Sie zuerst die Slack-Integration unter Jenkins verwalten -> System konfigurieren. Sie benötigen ein Slack-App-Integrations-Token.

post {
    success {
        slackSend channel: '#ci-cd', message: 'Build #${env.BUILD_NUMBER} succeeded! - ${env.JOB_NAME}'
    }
    failure {
        slackSend channel: '#ci-cd', color: 'danger', message: 'Build #${env.BUILD_NUMBER} failed! Check logs: ${env.BUILD_URL}'
    }
}

6. Artefaktverwaltung und Archivierung

Speichern von Build-Ausgaben (Artefakten) zur späteren Verwendung oder Überprüfung.

  • Archive the Artifacts: Ein integrierter Jenkins-Schritt zum Archivieren von Dateien, die von einem Build erzeugt wurden.

Konfigurationsbeispiel (Archivieren von Artefakten in Pipeline):

stage('Archive Artifacts') {
    steps {
        archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
    }
}

Dieser Schritt archiviert alle .jar-Dateien im target-Verzeichnis und aktiviert das Fingerprinting, was hilft, die Nutzung von Artefakten über Builds und Jobs hinweg zu verfolgen.

7. Sicherheit und Verwaltung von Anmeldeinformationen

Die sichere Verwaltung sensibler Informationen wie Passwörter, API-Schlüssel und privater SSH-Schlüssel ist von größter Bedeutung.

  • Credentials Plugin: Das Standard-Plugin zur Verwaltung von Anmeldeinformationen. Es bietet verschiedene Arten von Anmeldeinformationen (Benutzername/Passwort, SSH-Schlüssel, Token usw.).
  • Credentials Binding Plugin: Ermöglicht es Ihnen, Anmeldeinformationen an Umgebungsvariablen oder Dateien innerhalb Ihrer Build-Schritte zu binden, um sicherzustellen, dass sensible Daten nicht in Protokollen offengelegt werden.

Konfigurationsbeispiel (Verwendung von Anmeldeinformationen in Pipeline):

  1. Anmeldeinformationen hinzufügen: Gehen Sie zu Jenkins verwalten -> Anmeldeinformationen verwalten. Klicken Sie unter Auf Jenkins bezogene Speicher auf die Domäne (global). Klicken Sie auf Anmeldeinformationen hinzufügen. Wählen Sie den Typ (z. B. 'Benutzername mit Passwort'), füllen Sie die Details aus und geben Sie eine ID an (z. B. my-docker-registry-creds).

  2. In Pipeline verwenden:

    stage('Push to Docker Registry') {
        steps {
            withCredentials([usernamePassword(credentialsId: 'my-docker-registry-creds', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASS')]) {
                sh 'printf "%s" "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin'
                sh 'docker push my-registry/my-image:latest'
            }
        }
    }
    

Best Practices für die Plugin-Verwaltung

  • Halten Sie es minimal: Installieren Sie nur die Plugins, die Sie aktiv benötigen. Jedes Plugin fügt Overhead hinzu.
  • Regelmäßig überprüfen: Überprüfen Sie regelmäßig Ihre installierten Plugins. Entfernen Sie alle, die nicht mehr verwendet werden oder redundant sind.
  • Rechtzeitig aktualisieren: Halten Sie Ihre Plugins auf dem neuesten Stand, um von Fehlerbehebungen, Sicherheitspatches und neuen Funktionen zu profitieren. Testen Sie Updates jedoch nach Möglichkeit in einer Jenkins-Staging-Instanz.
  • Kompatibilität prüfen: Überprüfen Sie vor der Installation eines neuen Plugins dessen Dokumentation auf Kompatibilität mit Ihrer Jenkins-Version und anderen kritischen Plugins.
  • Abhängigkeiten verstehen: Einige Plugins sind auf andere angewiesen. Der Plugin-Manager kümmert sich normalerweise darum, aber seien Sie sich potenzieller Konflikte bewusst.
  • Sicherheit zuerst: Seien Sie vorsichtig bei der Installation von Plugins aus nicht vertrauenswürdigen Quellen. Verwenden Sie nur Plugins aus dem offiziellen Jenkins-Update-Center oder von seriösen Quellen.

Wichtigste Erkenntnis

Beginnen Sie mit Plugins, die Ihre tatsächlichen Workflows unterstützen: Pipeline, SCM, Build-Tools, Testberichte, Benachrichtigungen und Anmeldeinformationen. Überprüfen Sie den Plugin-Zustand vor der Installation, testen Sie Updates nach Möglichkeit außerhalb der Produktion und entfernen Sie Plugins, die von keinem aktiven Job mehr verwendet werden.