GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Was ist Jenkins?

Einführung

Jenkins ist eine Plattform zum Erstellen einer Continuous Integration/Continuous Delivery (CI/CD)-Umgebung. Das System bietet viele verschiedene Tools, Sprachen und Automatisierungsaufgaben, um die Erstellung von Pipelines beim Entwickeln und Bereitstellen von Programmen zu unterstützen.

Obwohl Jenkins das Skripting einiger Automatisierungsschritte erfordert, bietet das Programm eine schnelle und robuste Möglichkeit, den Lebenszyklus der Softwareentwicklung zu systematisieren.

Lesen Sie weiter, um mehr über Jenkins zu erfahren und warum es heute eines der führenden DevOps-Tools ist.

Jenkins-Definition

Jenkins ist ein in Java geschriebener Automatisierungsserver, der beim Erstellen, Testen und kontinuierlichen Bereitstellen von Software hilft. Das Open-Source-System ist derzeit einer der führenden Automatisierungsserver.

Im Allgemeinen bietet Jenkins Unterstützung für:

  • Verschiedene Tools zur Versionskontrolle wie Git.
  • Auf Ant und Apache Maven basierende Projekte erstellen.
  • Ausführen von Bash-Skripten und Windows-Stapeldateien.

Eine kurze Geschichte von Jenkins

Das Jenkins-Projekt startete 2004 unter dem Namen Hudson. Der Entwickler Kohsuke Kawaguchi, der bei Sun Systems arbeitete, wollte eine Methode zur kontinuierlichen Integration schaffen. Die Idee war, den Code vor dem Festschreiben zu testen, um zu vermeiden, dass Builds beschädigt werden.

Die Idee erwies sich als erfolgreich und breitete sich schnell auf den Rest seines Teams aus. Als Ergebnis erstellte Kohsuke Kawaguch das Jenkins-Projekt und veröffentlichte das Programm als Open Source. Die Nutzung verbreitete sich weltweit mit einer aktuellen Schätzung von 1,6 Millionen Nutzern .

Wofür wird Jenkins verwendet?

Obwohl Jenkins als kontinuierliches Integrationstool begann, deckt die aktuelle Verwendung die gesamte Softwarebereitstellungspipeline ab, einschließlich der Bereitstellung.

Das Programm führt Webcontainer und Plugins wie Apache Tomcat aus und hilft bei der Verwaltung von Lebenszyklus- und Zugriffsrechteanforderungen. Über 1700 Plugins für Jenkins bereichern die Softwareintegration, Automatisierung und Bereitstellungsprozesse und bieten eine anpassbare Umgebung.

Jenkins Kernterminologie

Jenkins umfasst verschiedene DevOps-Terminologien in verschiedenen Pipeline-Erstellungs- und Verwaltungsoptionen. Nachfolgend finden Sie eine Liste mit einigen gebräuchlichen Begriffen und deren Definition.

Jenkins-Pipeline

Die Jenkins-Pipeline ist ein vom Benutzer erstelltes Modell für die Continuous-Delivery-Pipeline. Die Pipeline enthält verschiedene Plugins, die dabei helfen, Verfahrensschritte von der Versionskontrolle bis hin zu den Benutzern zu definieren.

Alle Software-Änderungen und -Commits durchlaufen vor der Veröffentlichung einen komplexen Prozess. Die Methode umfasst drei Schritte :

  • Automatisiertes Bauen .
  • Mehrstufiger Test .
  • Bereitstellung Verfahren.

In Jenkins gibt es zwei Möglichkeiten, eine Pipeline zu erstellen :

  1. Definieren Sie die Pipeline direkt über die Benutzeroberfläche.
  2. Verwenden Sie die Pipeline als Code Methodik und erstellen Sie ein Jenkinsfile . Die Textdatei verwendet Groovy-kompatible Syntax, um den Pipeline-Prozess zu definieren.

Die Jenkins-Datei Syntax ist entwederdeklarativ oder geskriptet .

Eine grundlegende deklarative Jenkinsfile Pipeline ist einfacher zu verstehen. Ein Beispiel sieht wie folgt aus:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building…'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing…'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Der Code hat die folgenden Elemente:

  • Die obligatorische pipeline { } block ruft das Jenkins-Pipeline-Plugin auf.
  • Das Schlüsselwort agent definiert, wo die Pipeline läuft, wobei any gibt an, dass die Pipeline auf jedem verfügbaren Agenten ausgeführt wird.
  • Die stages { } Block stellt die Reihenfolge dar, in der die Pipeline ausgeführt wird.
  • Der Code enthält drei Phasen:Build , Test und Deploy , jeweils mit den entsprechenden steps { } .
  • Die steps { } Jenkins sagen, was an einem bestimmten Punkt zu tun ist.

Das Skript Äquivalent zum Jenkinsfile sieht wie folgt aus:

node {  
    stage('Build') { 
        echo 'Building…'
    }
    stage('Test') { 
        echo 'Testing…'
    }
    stage('Deploy') { 
        echo 'Deploying…'
    }
}

Durch das Einchecken einer Jenkins-Datei in ein Versionskontrolltool kann das gesamte Team die Schritte in der Bereitstellungspipeline bearbeiten, überprüfen und anpassen.

Kontinuierliche Integration

Kontinuierliche Integration ist ein Softwareentwicklungsverfahren, bei dem jede angewendete Änderung einen automatisierten Build-Test aufruft. Der Prozess stellt sicher, dass sich der Code ohne Fehler in eine funktionierende ausführbare Form integriert.

Continuous Integration ist ein wesentlicher Aspekt in Umgebungen mit mehreren Entwicklern. Jeder Entwickler nimmt Änderungen am Code vor und jede Änderung hat potenzielle Probleme.

Ein kontinuierliches Integrationstool wie Jenkins hilft beim Testen, Identifizieren und Beheben von Problemen, bevor Änderungen an der Produktion vorgenommen werden.

Automatisiertes Testen

Automatisierte Tests für Jenkins legen die Testausführung fest und speichern die Ergebnisse. Die Idee ist, sicherzustellen, dass Code in verschiedenen Szenarien funktioniert. Das Erstellen automatisierter Tests für verschiedene Umgebungen, wie z. B. mehrere Java-Versionen oder Betriebssysteme, hilft, Probleme in späteren Versionen vorherzusehen und zu verhindern.

Die automatisierten Testphasen fügen sich nahtlos in die CI-Pipeline in Jenkins ein. Verschiedene Plugins helfen bei der Ausführung von Einheiten-, Integrations-, Funktions- und Regressionstests und speichern die Ergebnisse zur späteren Anzeige und Analyse.

Controller (ehemals Master)

Die Jenkins-Architektur ist auf verteilte Builds ausgerichtet. Ein Knoten ist die zentrale Steuereinheit und der Organisator, bekannt als der Controller.

Der Controller ist der zentrale Prozess, in dem sich die Jenkins-Konfigurationen befinden. Früher als Master bekannt, verwaltet der Jenkins-Controller Agenten und ihre Verbindungen, hilft beim Laden von Plugins und koordiniert den Projektablauf.

Agent (ehemals Sklave)

Die Agenten verbinden sich mit dem Jenkins-Controller, um Projekte auszuführen. Agenten erfordern eine Java-Installation auf einer physischen oder virtuellen Maschine, z. B. Bare-Metal-Cloud-Instanzen, Docker-Images oder Kubernetes-Cluster.

Agenten in Jenkins tragen zu einer besseren Leistung bei, indem sie Builds mit Lastenausgleich versehen und eine sichere Umgebung schaffen, die vom Controller getrennt ist.

Knoten

Ein Knoten ist ein allgemeiner Begriff für Agenten und Controller, unabhängig von ihrer eigentlichen Rolle. Jede Maschine mit der Fähigkeit, Projekte und Pipelines zu erstellen, ist ein Jenkins-Knoten, und der Controller wird als integrierter Knoten bezeichnet .

Der integrierte Knoten überwacht den Zustand aller angeschlossenen Knoten und schaltet sie offline, wenn Werte einen Schwellenwert überschreiten.

Projekt (ehemals Job)

Ein Jenkins-Projekt oder ein Job ist ein vom Benutzer erstellter Automatisierungsvorgang mit einem bestimmten Ziel. Jenkins bietet standardmäßig verschiedene Build-Jobs an, und weitere sind über Plugins verfügbar.

Nachfolgend finden Sie eine Tabelle mit einer kurzen Beschreibung einiger Projekttypen.

Projekt Beschreibung
Freestyle Eine uneingeschränkte Build-Aufgabe mit mehreren Operationen.
Pipeline Ein mehrstufiges Projekt mit mehreren Build-Agenten.
Multi-Konfiguration Ein Projekt mit mehreren Testumgebungen und unterschiedlichen Konfigurationen.
Multi-Branch-Pipeline Ein Projekt, das eine Reihe von Pipeline-Projekten gemäß Verzweigungen in einem Versionsverwaltungssystem erstellt.

Bauen

In Jenkins repräsentieren Builds die einzelne Ausführung eines Jobs mit der aktuellen Konfiguration. Ein Build erstellt Software aus verschiedenen Quellen, die im Projektverfahren definiert sind. Je nach Projekt umfassen die Build-Mechanismen:

  • Abhängigkeiten sammeln.
  • Kompilieren oder Transformieren von Code.
  • Materialien archivieren.
  • Testen.
  • Bereitstellung in verschiedenen Umgebungen.

Daher ist ein Build ein Durchlauf eines definierten Projekts mit verschiedenen Schritten.

Wie funktioniert Jenkins?

Jenkins übernimmt die Entwicklungsschritte von der Integration bis zur Bereitstellung , die jeden Schritt automatisieren.

Jedes Mal, wenn ein Entwickler einen Commit im Quellcode-Repository veröffentlicht, löst Jenkins einen Build aus. Typischerweise werden die Commits an einen Entwicklungszweig gesendet.

Die Build-Schritte umfassen das Testen des Codes, um sicherzustellen, dass der Build nicht beschädigt wird. Wenn ein Fehler auftritt, benachrichtigt Jenkins den Entwickler, um entsprechend zu handeln. Wenn alle Tests erfolgreich sind, fährt die Pipeline mit den Integrationsschritten fort.

Die Integration dauert länger und erfordert das Testen des Codes mit mehreren Systemkonfigurationen. Jenkins führt parallele Integrationstests auf verschiedenen Knoten durch und reduziert so die Zeit, die zum Testen und Integrieren von Code benötigt wird.

Weiter unten in der Pipeline automatisiert Jenkins Benutzerakzeptanztests, was eine Voraussetzung vor der Bereitstellung ist. Wenn alle Tests bestanden werden, wird der Code in den Hauptzweig eingebunden und den Benutzern zur Verfügung gestellt.

Jenkins-Funktionen

Die Hauptmerkmale von Jenkins sind:

  • Einfache Installation . Das Java-basierte Programm ist autonom und plattformunabhängig.
  • Unkompliziert zu konfigurieren . Die benutzerfreundliche Weboberfläche macht die Konfiguration zu einem einfachen Prozess. Informationen zur erstmaligen Einrichtung finden Sie in unserem Jenkins-Tutorial.
  • Anpassbar mit massiver Plugin-Verfügbarkeit . Derzeit gibt es über 1700 verfügbare Plugins, um die Funktionalität von Jenkins zu erweitern. Importieren Sie für alle fehlenden Funktionen zusätzliche externe oder benutzerdefinierte Plugins.
  • Open-Source . Jenkins ist vollständig Open-Source und kann kostenlos verwendet werden, was es zu einer kostengünstig zu implementierenden Technologie macht.

Vor- und Nachteile von Jenkins

Jenkins bringt gewisse Vor- und Nachteile mit sich. Nachfolgend finden Sie eine detaillierte Übersicht über die Vor- und Nachteile der Arbeit mit Jenkins.

Vorteile von Jenkins

Einige Vorteile von Jenkins sind:

  • Schnellerer Entwicklungszyklus . Builds und Tests bei jedem Commit schaffen eine schnelllebige Umgebung, um Fehler zu beseitigen. Neue Funktionen und Versionen erreichen den Endnutzer schneller und mit weniger Fehlern.
  • Weniger Zeit zum Integrieren von Code . Vor Jenkins war die Codeintegration ein manueller Prozess, und das Debuggen von Code war komplex. Um eine funktionierende Version zu erreichen, müssten verschiedene Commits durchlaufen und Probleme analysiert werden. Bei der Verwendung von Jenkins stellt die Integration nach jedem Commit sicher, dass die Programmfunktionalität immer verfügbar und einsatzbereit ist.
  • Schnelles Feedback für Entwickler . Wann immer ein Build kaputt geht, bleiben die Entwickler informiert. Das Feedback-System hilft dem Entwicklerteam, die Probleme schnell anzugehen, anstatt zahlreiche Commits zu debuggen.
  • Automatisierter Pipeline-Workflow . Automatisierte Tests für jeden Commit werden direkt in die Pipeline integriert.

Nachteile von Jenkins

Nachfolgend einige Nachteile bei der Arbeit mit Jenkins:

  • Kostspielig . Obwohl Jenkins kostenlos ist, erfordert das Programm eine stabile und robuste Infrastruktur.
  • Ständige Wartung . Die Wartung eines Jenkins-Servers ist zeitaufwändig. Das Hinzufügen von Stufen zu einer Pipeline, das Aktualisieren des Servers mit neuen Funktionen und das Verfolgen von Plug-in-Updates erfordern, dass ein Administrator den Server neu startet und manuell verwaltet.
  • Entwicklerzentriert . Die Plattform ist funktionsorientiert und für Nicht-Entwickler nicht sehr benutzerfreundlich. Etwas Entwicklererfahrung ist ein Muss, wenn man mit Jenkins arbeitet.

So installieren Sie Jenkins

Jenkins funktioniert auf verschiedenen Betriebssystemen und Umgebungen. Die Installation ist in vielen Formen verfügbar, wie zum Beispiel:

  • Installationspakete für die wichtigsten Betriebssysteme wie Windows, Ubuntu, Debian, CentOS usw.
  • Eine WAR-Archivdatei.
  • Ein Docker-Image.
  • Auf einem Kubernetes-Cluster.
  • Quellcode erstellen.

Jenkins läuft als eigenständiges Paket oder auf einem Java-Anwendungsserver. Die Benutzeroberfläche ist webbasiert und verfügt in beiden Fällen über eine REST-API.


Ubuntu
  1. Was ist Bare-Metal-Cloud

  2. Was ist ein Spark-DataFrame?

  3. Was ist Web 3.0?

  4. Was ist JingOS Linux?

  5. So verwenden Sie den Quellbefehl im Jenkins-Pipeline-Skript

Was ist 127.0.0.1 Localhost?

So installieren Sie Jenkins unter Ubuntu 18.04

So installieren Sie Jenkins unter Ubuntu 20.04 / Ubuntu 18.04

Was ist Localhost?

Was ist DNS-Cache-Poisoning?

So installieren Sie Jenkins unter Ubuntu 14.04