Was ist Jenkins? Geschichte, Architektur, Pipeline & Vorteile
Veröffentlicht: 2020-05-01Teams, die bereit sind, die verschiedenen Phasen von DevOps zu integrieren, können dies durch kontinuierliche Integration tun. Es stehen mehrere Tools zur Verfügung, um diese Integration durchzuführen. Einer der beliebtesten von ihnen ist Jenkins. Bevor Sie jedoch loslegen und dieses Tool einsetzen, müssen Sie verstehen, was es genau ist, wie es funktioniert, welche Funktionen es bietet und welche Vorteile es gegenüber anderen ähnlichen Tools bietet.
Als Jenkins gestartet wurde, war es nur ein Open-Source-Tool für kontinuierliche Integration. Nach den jüngsten Aktualisierungen ist es jedoch zu einem Tool geworden, das zwei Aufgaben erfüllen kann – kontinuierliche Integration und kontinuierliche Bereitstellung. Es ist jetzt ein Tool, das auch bei der Organisation der Anwendungsbereitstellung hilft. Dieser Blog soll alle Details behandeln, die Sie über Jenkins wissen sollten, bevor Sie damit beginnen, es in Ihren IT-Projekten zu verwenden.
Inhaltsverzeichnis
Geschichte von Jenkins
So wie wir so viele interessante Geschichten über die Entwicklung so vieler Technologien und Tools im Laufe der Jahre haben, haben wir auch eine für Jenkins. Es geht auf das Jahr 2004 zurück, als Kohsuke Kawaguchi, der Entwickler von Jenkins, als Java-Entwickler bei Sun Microsystems arbeitete.
Kawaguchi ahnte nicht, dass die Zukunft etwas ganz Besonderes für ihn bereithielt. Damals war Kawaguchi an mehreren Entwicklungsprojekten beteiligt. Er mochte es nicht, die Builds aufgrund von Codefehlern zu beschädigen. Dies veranlasste ihn, nach etwas zu suchen, das ihm helfen könnte zu wissen, ob der Code funktionieren wird oder nicht, bevor er in das Repository übertragen wird.
Diese Neugier führte zur Entwicklung eines Automatisierungsservers namens Hudson. 2011 kam es zu einem berüchtigten Streit zwischen der unabhängigen Open-Source-Community Hudson und Oracle, die nun Sun Microsystems unter ihrem Dach hat.
Dieser Streit führte zu einem Fork, der Jenkins genannt wurde. Sowohl Jenkins als auch Hudson existierten noch lange; Jenkins war jedoch die bevorzugtere Wahl. Das Hudson-Projekt wurde im Januar 2020 eingestellt. Jenkins ist immer noch aktiv.

Was ist Jenkins?
Jenkins kann als Automatisierungstool bezeichnet werden, das von DevOps-Teams verwendet wird, die eine kontinuierliche Integration in ihre Projekte einbringen möchten. Es ist Open-Source-Software, die in Java erstellt wurde. Es wird während des gesamten Lebenszyklus der Softwareentwicklung verwendet.
Nicht nur in der Entwicklung und beim Testen, sondern auch beim Deployment. Es ermöglicht Entwicklern, Änderungen sehr einfach in ihre Projekte zu integrieren. Jenkins wird auch für die kontinuierliche Bereitstellung von Softwareprojekten verwendet.
Erfahren Sie mehr über: Lösen von Echtzeitszenarien mit DevOps
Wie funktioniert kontinuierliche Integration?
Continuous Integration (CI) ist ein integraler Bestandteil des Softwareentwicklungsprozesses. Es kann aus einer Reihe verschiedener Aufgaben bestehen, darunter unter anderem die Verwendung einzigartiger Funktionen im Repository, die Entwicklung von Funktionen und Fehlerbehebungen.
Ein kontinuierliches Integrationstool wie Jenkins eignet sich hervorragend zum Identifizieren von Problemen mit aktuellen Anwendungsquellen und bietet eine schnelle Reaktion, indem es den Integrationsprozess mithilfe automatisierter Build- und Testfunktionen überprüft.
Kontinuierliche Integration ist aus einem Programmiermodell entstanden, das mit der Agile-Methodik verbunden ist. Das Konzept kann jedoch immer noch auf all jene Programmiermodelle angewendet werden, die iterativer Natur sind.
Auch die Wasserfallmodelle und andere derartige Entwicklungsansätze können von den Möglichkeiten der kontinuierlichen Integration profitieren. CI arbeitet oft mit Continuous Delivery (CD) zusammen, um ausführbaren Code viel schneller und automatisiert an die Produktion zu liefern. Nachfolgend sind gängige CI-Praktiken aufgeführt:
- Regelmäßiges Code-Committing
- Inszenierung bauen
- Eine Build-Maschine, die der Integration gewidmet ist
- Kontinuierliches Feedback
- Kategorisierung von Entwicklertests
Continuous Integration kann in einer beliebigen Häufigkeit veröffentlicht werden, die Sie unter Berücksichtigung Ihres Projekts und Unternehmens für angemessen halten. Unternehmen, die CI verwenden, haben also regelmäßiger Releases als diejenigen, die traditionelle Softwareentwicklungsprozesse verwenden.
Immer mehr Unternehmen nutzen CI aufgrund einer einfachen Tatsache – selbst die kleinste Änderung im Code kann zu einem neuen Build führen. CI kann während der Entwicklung von Software kontinuierliches Feedback geben.
Dies hilft DevOps-Teams, die Fehler in jeder Phase der Entwicklung zu beseitigen. Es erkennt auch Probleme ziemlich früh im Entwicklungsprozess. Dadurch werden diese Probleme weniger störend, nicht zu komplex und einfach zu handhaben.
Lesen Sie: Die besten DevOps-Tools auf dem Markt
Wie funktioniert Continuous Delivery?
Continuous Delivery ist ein Teil des Softwareentwicklungsprozesses, der es Ihnen ermöglicht, die Entwicklung so voranzutreiben, dass Sie immer bereit sind, die Software für die Produktion freizugeben. Hier sind einige Fälle, in denen sich Continuous Delivery als besonders fruchtbar erweist:
1. Das DevOps-Team stellt sicher, dass die Software bereit für die Bereitstellung ist, selbst wenn die Entwicklung von Funktionen im Gange ist
2. Die Software ist während des gesamten Softwareentwicklungszyklus einsatzbereit
3. Die Bereitstellung per Knopfdruck ist eine Realität für verschiedene Softwareversionen in verschiedenen On-Demand-Umgebungen
Wie kann Continuous Delivery erreicht werden? Die erste Voraussetzung ist, dass die Software bereits kontinuierlich integriert wird. Das Entwicklungsteam sollte dann die ausführbaren Dateien erstellen und Tests an ihnen durchführen, um Fehler oder Bugs zu erkennen. Außerdem ist es sehr wichtig, die ausführbaren Dateien in verschiedenen Produktionsumgebungen zu testen, um sicherzustellen, dass die Software jederzeit bereit ist, an die Produktion gesendet zu werden. Dazu ist eine Bereitstellung erforderlich.
Die Automatisierung von Jenkins ermöglicht es Unternehmen, ihren Softwareentwicklungsprozess erheblich zu beschleunigen. Jenkins ist in der Lage, verschiedene Arten von Softwareentwicklungslebenszyklusprozessen zu integrieren, einschließlich Erstellen, Testen, Bereitstellen und mehr. Plugins sind sehr wichtig, um eine kontinuierliche Integration zu gewährleisten. Wenn Sie ein neues Tool zu Jenkins hinzufügen möchten, müssen Sie zunächst sicherstellen, dass Sie ein Plugin dafür installieren.
Lesen Sie: Fragen und Antworten zu Jenkins-Interviews
Was ist die Jenkins-Pipeline?
Eine Jenkins-Pipeline ist eine Kombination aus Jobs, Aufgaben oder Ereignissen, die in einer Sequenz miteinander verbunden sind. Mit anderen Worten, es handelt sich um eine Gruppe von Plugins, die eine einfache Integration und Implementierung von Continuous-Delivery-Pipelines ermöglichen. Erweiterbare Automatisierung funktioniert, um eine Pipeline bei der Erstellung sowohl komplexer als auch einfacher Bereitstellungspipelines in Form von Code und mit Hilfe einer domänenspezifischen Sprache oder DSL zu unterstützen.
Lassen Sie uns nun ein wenig über Continuous Delivery Pipelines und ihre Funktionsweise diskutieren. Das grundlegende Merkmal einer Jenkins-Pipeline ist, dass jedes Ereignis, jede Aufgabe oder jeder Job, den sie enthält, auf die eine oder andere Weise von einem oder mehreren dieser Ereignisse, Jobs oder Aufgaben abhängig ist. Continuous-Delivery-Pipelines weisen unterschiedliche Zustände auf, z. B. „Build“, „Test“, „Deployment“, „Release“. Alle diese Zustände sind miteinander verbunden.
Eine Continuous-Delivery-Pipeline ist eine Sequenz, in der Ereignisse in jedem dieser Zustände funktionieren. Es ist ein automatisierter Ausdruck, der Prozesse verarbeitet, die zum Abrufen von Versionskontrollsoftware erforderlich sind. Alle Änderungen, die an der Software vorgenommen werden, müssen mehrere komplexe Prozesse durchlaufen, bevor die Software freigegeben wird. Dieser Prozess stellt auch sicher, dass die Software auf wiederholbare und zuverlässige Weise entwickelt wird und umfasst mehrere Test- und Bereitstellungsphasen, die die Software durchläuft.
JenkinsFile ist eine Textdatei, die zum Definieren von Jenkins-Pipelines verwendet wird. JenkisFile wird häufig verwendet, um Pipelines in Form von Code zu implementieren, und dieser gesamte Prozess wird mithilfe von DSL definiert. Sie können die JenkinsFile auch verwenden, um die Schritte aufzuschreiben, die zum Ausführen von Jenkins-Pipelines befolgt werden müssen. Im Folgenden sind einige Vorteile der Verwendung von JenkinsFile aufgeführt:

- Es erleichtert die Überprüfung des Codes in der Pipeline.
- Es kann Ihnen dabei helfen, Pull-Requests für alle Pipelines auszuführen, die Sie für verschiedene Branches erstellt haben.
- Es ist die einzige Quelle für Ihre Pipelines, die von verschiedenen Benutzern geändert werden kann.
- Es kann Ihnen helfen, eine Prüfung Ihrer Jenkins-Pipeline durchzuführen.
JenkinsFile wird mit zwei Arten von Syntax definiert
Deklarative Pipelinesyntax
Das Erstellen von Pipelines ist mit dieser Syntax viel einfacher. Es verfügt über eine gut etablierte Hierarchie, die beim Erstellen von Pipelines hilft. Es bietet Ihnen einfache Möglichkeiten, die Kontrolle über jeden Aspekt auszuüben, der mit der Ausführung von Pipelines verbunden ist.
Skriptbasierte Pipeline-Syntax
Es verwendet einen leichtgewichtigen Executor und läuft auf Jenkins Master. Es verfügt über einen eigenen Satz von Ressourcen, die es verwendet, um Pipelines in atomare Befehle umzuwandeln. Wie aus ihren Definitionen deutlich wird, unterscheiden sich diese beiden Syntaxen stark voneinander. Nicht nur das, sondern sie werden auch noch unterschiedlich definiert.
Warum sollten Sie die Jenkins-Pipeline verwenden?
Jenkins automatisiert diesen Softwareentwicklungsprozess durch seine kontinuierlichen Integrationsfunktionen. Sie können verschiedene Anwendungsfälle verwenden, um eine Reihe von Automatisierungsjobs zu erstellen, und dann die Jenkins-Pipeline verwenden, um sie alle auszuführen. Nachfolgend sind einige Gründe für die Verwendung der Jenkins-Pipeline aufgeführt:
- Da sie in Form eines Codes implementiert ist, kann die Jenkins-Pipeline eine Reihe von Benutzern haben, die den Prozess bearbeiten und ausführen können.
- Es unterstützt Projekte, die größer als üblich sind. Es ist möglich, mehrere Projekte gleichzeitig auszuführen oder Pipelines in einer Schleife zu verwenden.
- Sie sind robust. Sie müssen sich keine Sorgen machen, wenn Ihr Server unter unvorhergesehenen Umständen neu startet. Die Jenkins-Pipeline würde automatisch fortgesetzt.
- Der Pipelineprozess kann angehalten und erst fortgesetzt werden, wenn Sie eine Benutzereingabe erhalten.
Jenkins-Architektur
In diesem Abschnitt konzentrieren wir unsere Diskussion darauf, wie Jenkins sowohl Entwicklern als auch Testern hilft? Lassen Sie uns die kontinuierliche Integration von Jenkins besprechen, um das zu verstehen.
Am Anfang nehmen Entwickler alle gewünschten Änderungen im Quellcode vor. Dieser Code wird im Git-Repository gespeichert. Der Änderung wird gefolgt, indem diese Änderungen festgeschrieben werden. Der Jenkins-Server erledigt seine Aufgabe und verfolgt Änderungen, die an den im Repository gespeicherten Dateien vorgenommen wurden. Die von den Entwicklern vorgenommenen Änderungen werden vom Jenkins-Server erkannt. Jenkins übernimmt dann diese Änderungen und beginnt mit der Arbeit an einem neuen Build der Software auf der Grundlage dieser Änderungen.
Das betroffene Team erhält eine Benachrichtigung, wenn der Build fehlschlägt. Wenn der Build jedoch erfolgreich ist, stellt Jenkins ihn auf dem Testserver bereit. Entwickler werden über Build-Entwicklungs- und Testergebnisse benachrichtigt. Dieser Kreislauf wiederholt sich immer wieder.
Jetzt, da wir verstehen, wie Jenkins funktioniert, wird es für uns einfacher, den Unterschied zwischen seiner Funktionsweise und den Methoden zu erkennen, die zuvor für die Freigabe und Bereitstellung verwendet wurden.
Bevor Jenkins in den Vordergrund trat, umfasste der Prozess also das Erstellen und Testen des vollständigen Quellcodes. Das Lokalisieren und Beheben von Fehlern und Fehlern war keine einfache Aufgabe, die früher die Auslieferung von Software verzögerte. Entwickler mussten lange auf Testergebnisse warten. Früher erfolgte die Bereitstellung manuell.
Nach Jenkins werden alle Änderungen im Quellcode getestet, sobald sie vorgenommen wurden. Entwickler müssen nicht den gesamten Quellcode durchgehen, um Fehler und Bugs zu finden. Der Start von Build-Releases ist jetzt viel häufiger. Entwickler werden über die Testergebnisse aller Änderungen und Commits informiert. Sobald Sie die Änderungen festgeschrieben haben, kann der Jenkins-Server mit der Ausführung anderer Prozesse beginnen.
Verteilte Jenkins-Architektur
Jenkins verwaltet die Builds mit Hilfe der Master-Slave-Architektur. Master- und Slave-Einheiten kommunizieren über das IP/TCP-Protokoll miteinander. Hier ist ein kleiner Download, wie das alles funktioniert.
Jenkins-Meister
Dies ist der primäre Server von Jenkins. Es übernimmt eine Reihe von Aufgaben, die unter anderem das Planen von Build-Jobs, das Aufzeichnen und Präsentieren von Build-Ergebnissen, das Versenden von Builds an Slaves zur Ausführung, das Überwachen aller Slaves sowohl offline als auch online und andere umfassen. Master Jenkins ist in der Lage, Build-Jobs direkt auszuführen.
Jenkins-Sklave
Es läuft auf dem Remote-Server. Der Jenkins-Server folgt den Anfragen des Jenkins-Masters und ist mit allen Betriebssystemen kompatibel. Vom Master abgesetzte Bauaufträge werden vom Slave ausgeführt. Das Projekt kann geeignet konfiguriert werden, um eine bestimmte Slave-Maschine auszuwählen.
Vorteile von Jenkins
1. Jenkins ist ein Open-Source-Tool, das extrem einfach zu installieren und zu verwenden ist. Sie benötigen keine zusätzlichen Komponenten, um es zu verwenden
2. Es ist kostenlos und kann mit verschiedenen Plattformen wie Windows, Linux, macOS und anderen verwendet werden
3. Es ist weit verbreitet, daher ist es kein großes Problem, Unterstützung in Online-Communities zu finden
4. Jenkins automatisiert alle Integrationsarbeiten. Integrationsprobleme sind selten und helfen daher, Zeit und Geld über den Projektlebenszyklus zu sparen.
5. Es ist einfach zu konfigurieren, zu erweitern und zu modifizieren. Es ermöglicht die sofortige Generierung von Tests und das Erstellen, Automatisieren und Bereitstellen von Code auf verschiedenen Plattformen
6. Jenkins kann so konfiguriert werden, dass CI- und CD-Konzepte ordnungsgemäß ausgeführt werden
7. Es kann Probleme leicht erkennen und beheben. Die Software ist immer bereit für eine plötzliche Freigabe
8. Unterstützt eine Vielzahl von Plugins, was eine bessere Flexibilität ermöglicht
9. Es hilft, Fehler sehr früh zu erkennen, wodurch Entwickler viel Zeit und harte Arbeit sparen
Steigern Sie die Produktivität mit Jenkins-Plugins
Hier sind einige der häufigsten Plugins, die von Entwicklern verwendet werden.

1. Plugin zur Auftragserstellung
Die Aufrechterhaltung von Projektjobs in wachsenden oder größeren Organisationen ist etwas schwierig, vor allem, weil Entwickler oft an verschiedenen Branches und Releases arbeiten. Während Sie bereit sind, Entwickler Jobs selbst erstellen zu lassen, sind Sie sich nicht sicher, ob sie in der Lage sein werden, die Unternehmensstandards zu erfüllen. Das ist ein großes Dilemma. Mit diesem Plugin können Sie Vorlagen definieren, die Ihre Entwickler zum Erstellen von Jobs verwenden können. Sie können den Konfigurationszugriff der Vorlage mit dem Plug-in für die rollenbasierte Autorisierung deaktivieren.
2. Plugin für globale Build-Statistiken
Es ist sehr wichtig, dass Sie Ihre aktuelle Kapazität, Fähigkeiten und Nutzung kennen, um sich auf die Systemanforderungen oder die Kapazitätsplanung vorzubereiten. Sie sollten sich der Anzahl der Builds bewusst sein, die regelmäßig stattfinden. Sie müssen auch die Zeit kennen, die zum Freigeben von Builds erforderlich ist. Dieses Plugin stellt Ihnen alle notwendigen Informationen zur Verfügung, um all diese Fragen zu beantworten.
3. GitLab/GitHub-Pull-Request-Builder
Sie können diese Vorlage verwenden, um den Code-Review-Prozess in GitLab/GitHub auf ein höheres Niveau als üblich zu automatisieren. Sie können davon ausgehen, dass dieses Plugin für jede Pull-Anfrage nicht nur den Build ausführt, sondern auch Ergebnisse erstellt und den Status mit einer Pull-Anfrage teilt oder wichtige statische Analysen sammelt. Dieses Plugin sagt viel über den Code aus, der zusammengeführt werden muss. Mit diesem Plugin ist es unter Umständen auch möglich, eine automatische Zusammenführung zu definieren.
Fazit
Dieser Blog vermittelt eine fundierte Vorstellung davon, wie Jenkins funktioniert und wie es für die Umsetzung verschiedener Projektideen mit CI/CD eingesetzt werden kann. Es ist heutzutage eines der am meisten bevorzugten DevOps-Tools, das mit seiner effektiven Benutzeroberfläche und seinen Plugins die Dinge sehr einfach macht.
Wenn Sie mehr über Full-Stack-Entwicklung erfahren möchten, schauen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenges Training, mehr als 9 Projekte und Aufgaben bietet. IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.