germanyuksettings

Was bedeutet Jenkins

Jenkins ist ein in Java (mehr Infos Java Seminare) geschriebenes Open-Source-Automatisierungswerkzeug mit Plugins, die für die Zwecke der kontinuierlichen Integration entwickelt wurden. Jenkins (siehe auch Jenkins Schulung) wird verwendet, um Ihre Software-Projekte kontinuierlich zu erstellen und zu testen. Dadurch wird es für Entwickler einfacher, Änderungen in das Projekt zu integrieren, und für Benutzer wird es einfacher, einen neuen Build zu erhalten.
Jenkins bietet eine einfache Möglichkeit, mit Hilfe von Pipelines eine Umgebung zur kontinuierlichen Integration oder kontinuierlichen Bereitstellung (CI/CD) für nahezu jede Kombination von Sprachen und Quellcode-Repositorys einzurichten sowie andere routinemäßige Entwicklungsaufgaben zu automatisieren. Auch wenn Jenkins die Erstellung von Skripten für einzelne Schritte nicht überflüssig macht, so bietet es Ihnen doch eine schnellere und robustere Möglichkeit, Ihre gesamte Kette von Build-, Test- und Bereitstellungstools zu integrieren, als Sie sie leicht selbst erstellen können.

"Don't break the nightly build!" ist eine Kardinalregel bei der Entwicklung von Software, die jeden Morgen eine frisch erstellte tägliche Produktversion für ihre Tester bereitgestellt wird. Vor dem Zeitalter vor Jenkins war das Beste, was ein Entwickler tun konnte, um den nächtlichen Build nicht zu unterbrechen, sorgfältig und erfolgreich auf einem lokalen Rechner zu bauen und zu testen, bevor der Code übergeben wurde. Aber das bedeutete, die eigenen Änderungen isoliert zu testen, ohne die täglichen Commits aller anderen. Es gab keine feste Garantie, dass der nächtliche Build den Commit überleben würde.

Im März 2019 startete die Linux (mehr Infos Linux Training) Foundation zusammen mit CloudBees, Google (siehe Google Seminar) und einer Reihe anderer Unternehmen eine neue Open-Source-Software-Stiftung mit dem Namen Continuous Delivery Foundation (CDF). Jenkins-Mitarbeiter beschlossen, dass ihr Projekt dieser neuen Stiftung beitreten sollte. Kawaguchi schrieb damals, dass sich für die Nutzer nichts von Bedeutung ändern würde.

Jenkins Automatisierung
Heute ist Jenkins der führende Open-Source-Automatisierungsserver mit rund 1.600 Plug-ins zur Unterstützung der Automatisierung aller Arten von Entwicklungsaufgaben. Das Problem, das Kawaguchi ursprünglich zu lösen versuchte, die kontinuierliche Integration und kontinuierliche Bereitstellung von Java-Code (d.h. das Erstellen von Projekten, das Ausführen von Tests, die statische Code-Analyse und das Deployment) ist nur einer von vielen Prozessen, die mit Jenkins automatisiert werden. Diese 1.600 Plug-Ins umfassen fünf Bereiche: Plattformen, Benutzeroberfläche, Verwaltung, Quellcodeverwaltung und - am häufigsten - Build-Management.

Wie funktioniert Jenkins?

Jenkins wird als WAR-Archiv und als Installationspakete für die wichtigsten Betriebssysteme, als Homebrew-Paket, als Docker-Image und als Quellcode vertrieben. Der Quellcode besteht hauptsächlich aus Java, mit einigen wenigen Groovy-, Ruby- und Antlr-Dateien.

Sie können Jenkins WAR eigenständig oder als Servlet in einem Java-Anwendungsserver wie Tomcat ausführen. In beiden Fällen erzeugt es eine Web-Benutzerschnittstelle und nimmt Aufrufe seiner REST-API entgegen.

Wenn Sie Jenkins zum ersten Mal ausführen, erstellt es einen administrativen Benutzer mit einem langen Zufallspasswort, das Sie in seine ursprüngliche Webseite einfügen können, um die Installation freizuschalten.

Wozu dienen Jenkins Plugins?
Plugins sind das primäre Mittel zur Erweiterung der Funktionalität einer Jenkins-Umgebung, um organisations- oder benutzerspezifische Anforderungen zu erfüllen. Es gibt über tausend verschiedene Plugins, die auf einem Jenkins-Master installiert werden können, um verschiedene Build-Tools, Cloud-Provider, Analyse-Tools und vieles mehr zu integrieren.
Sobald Jenkins installiert ist, können Sie entweder die Standard-Plugin-Liste akzeptieren oder Ihre eigenen Plugins auswählen. 
Jenkins-Plugins sind leicht zu erlernen, aber schwierig zu beherrschen. Wenn es also bereits eines gibt, das fast alles tut, was Sie brauchen, sollten Sie versuchen, das zu tun. Die Gemeinschaft, die hinter Jenkins steht, hat den Einstieg mit einer Vielzahl von Plugin-Tutorials leicht gemacht, die alles von Bauschritten bis hin zur Kolonisierung der Terminalausgabe abdecken und es Ihnen leicht machen, Ihr Lernen an die Aufgabe anzupassen, die Sie erreichen wollen. Die hier angebotenen Jenkins Schulungen bieten einen Workshop an, der unter anderem die Jenkins Plugins thematisieren.
Jenkins definiert Erweiterbarkeitspunkte, bei denen es sich um Schnittstellen oder abstrakte Klassen handelt, die einen Aspekt eines Build-Systems modellieren. Diese Schnittstellen definieren Verträge darüber, was implementiert werden muss, und Jenkins erlaubt es Plugins, diese Implementierungen beizusteuern.

Continuous Integration mit Jenkins
Stellen wir uns ein Szenario vor, in dem der komplette Quellcode der Anwendung erstellt und dann zum Testen auf einem Testserver bereitgestellt wurde. Das klingt nach einem perfekten Weg, um Software zu entwickeln, aber dieser Prozess hat viele Fehler.
  •     Die Entwickler müssen warten, bis die komplette Software für die Testergebnisse entwickelt ist.
  •     Es besteht eine hohe Wahrscheinlichkeit, dass die Testergebnisse mehrere Fehler aufweisen. Es war schwierig für die Entwickler, diese Fehler zu lokalisieren, da sie den gesamten Quellcode der Anwendung überprüfen müssen.
  •     Das verlangsamt den Prozess der Softwarelieferung.
  •     Es fehlte kontinuierliches Feedback zu Dingen wie Codierungs- oder Architekturproblemen, Build-Fehlern, Teststatus und Uploads von Dateiversionen, wodurch die Qualität der Software sinken kann.
  •     Der gesamte Prozess war manuell, was das Risiko eines häufigen Fehlschlags erhöht.

Aus den oben genannten Problemen ist ersichtlich, dass nicht nur der Software-Lieferprozess langsam wurde, sondern auch die Qualität der Software abnahm. Dies führt zur Unzufriedenheit der Kunden. Um ein solches Chaos zu überwinden, war es daher dringend notwendig, ein System zu schaffen, bei dem die Entwickler kontinuierlich einen Build und Test für jede Änderung im Quellcode auslösen können. Das ist es, worum es bei CI geht. Jenkins ist das ausgereifteste CI-Tool auf dem Markt, also lassen Sie uns sehen, wie die kontinuierliche Integration mit Jenkins die oben genannten Mängel überwinden konnte.

Daraus ergeben sich folgende Anforderungen an Jenkins
  • Zunächst übergibt ein Entwickler den Code an das Quellcode-Repository. In der Zwischenzeit überprüft der Jenkins-Server das Repository in regelmäßigen Abständen auf Änderungen.
  • Kurz nachdem eine Übergabe erfolgt ist, erkennt der Jenkins-Server die Änderungen, die im Quellcode-Repository vorgenommen wurden. Jenkins zieht diese Änderungen und beginnt mit der Vorbereitung eines neuen Builds.
  • Wenn der Build fehlschlägt, wird das betroffene Team (siehe auch Team Schulungen) benachrichtigt.
  • Wenn der Build erfolgreich ist, stellt Jenkins den eingebauten Test-Server bereit.
  • Nach dem Testen erzeugt Jenkins ein Feedback und benachrichtigt dann die Entwickler über den Build und die Testergebnisse.
  • Jenkins überprüft das Quellcode-Repository weiterhin auf Änderungen am Quellcode und der gesamte Prozess wiederholt sich ständig.

Jenkins in einer Pipeline
Zunächst einmal ist es hilfreich zu wissen, dass Jenkins selbst keine Pipeline ist. Die bloße Schaffung eines neuen Jenkins-Arbeitsplatzes stellt keine Pipeline dar. Stellen Sie sich Jenkins wie eine Fernbedienung vor - es ist der Ort, an dem Sie auf eine Schaltfläche klicken. Was passiert, wenn Sie auf eine Taste klicken, hängt davon ab, was mit der Fernbedienung gesteuert werden soll. Jenkins bietet eine Möglichkeit, andere Anwendungs-APIs, Software-Bibliotheken, Build-Tools usw. mit Jenkins zu verbinden, und Jenkins führt die Aufgaben aus und automatisiert sie. Jenkins selbst führt keine Funktionalität aus, wird aber immer leistungsfähiger, je mehr andere Werkzeuge in Jenkins integriert werden.
Eine Jenkins-Pipeline ist die Möglichkeit, einen Jenkins-Auftrag sequentiell in einer definierten Weise auszuführen, indem man ihn kodifiziert und innerhalb mehrerer Blöcke strukturiert, die mehrere Schritte mit Aufgaben enthalten können.
Eine Pipeline ist ein separates Konzept, das sich auf die Gruppen von Ereignissen oder Jobs bezieht, die in einer Sequenz miteinander verbunden sind: Die Jenkins-Pipeline wird als kodifiziertes Skript bereitgestellt, das üblicherweise als Jenkinsfile bezeichnet wird, obwohl der Dateiname unterschiedlich sein kann.
Jenkins-Pipelines können deklarativ oder skriptbasiert sein. Eine deklarative Pipeline, die einfachere der beiden, verwendet eine Groovy-kompatible Syntax - und wenn Sie möchten, können Sie die Datei mit #!groovy beginnen, um Ihren Code-Editor in die richtige Richtung zu weisen. Eine deklarative Pipeline beginnt mit einem Pipelineblock, definiert einen Agenten und definiert Stufen, die ausführbare Schritte enthalten

Warum gibt es Blue Ocean?

Die Welt hat sich von rein funktionalen Entwickler-Tools zu Entwickler-Tools entwickelt, die Teil einer "Entwickler-Erfahrung" sind. Das heißt, es geht nicht mehr um ein einzelnes Tool, sondern um die vielen Tools, die die Entwickler im Laufe des Tages benutzen, und darum, wie sie zusammenarbeiten, um einen Arbeitsablauf zu erreichen, der für den Entwickler vorteilhaft ist - das ist "Entwickler-Erfahrung".

Hersteller von Entwickler-Tools wie Heroku, Atlassian (mehr dazu Atlassian Training) und Github haben die Messlatte für das, was als gute Entwickler-Erfahrung gilt, höher gelegt, und Entwickler erwarten zunehmend ein außergewöhnliches Design (mehr dazu Design Seminar) . In den letzten Jahren sind Entwickler immer mehr von Tools angezogen worden, die nicht nur funktional sind, sondern sich nahtlos in ihren Arbeitsablauf einfügen und Freude bereiten. Dieser Wandel steht für einen höheren Standard von Design und Benutzererfahrung. Jenkins muss aufsteigen, um diesem höheren Standard gerecht zu werden.

Die Erstellung und Visualisierung von CD-Pipelines ist für viele Jenkins-Anwender etwas Wertvolles, was sich in den über 5 Plugins zeigt, die die Jenkins-Gemeinschaft geschaffen hat, um ihren Bedürfnissen gerecht zu werden. Dies deutet auf die Notwendigkeit hin, die Art und Weise, wie Jenkins diese Konzepte derzeit ausdrückt, zu überdenken und Lieferpipelines als zentrales Thema für die Jenkins-Benutzererfahrung zu betrachten.

Dabei geht es nicht nur um CD-Konzepte, sondern auch um die Werkzeuge, die die Entwickler tagtäglich verwenden - Github, Bitbucket (mehr Infos Bitbucket Schulungen) , Slack, HipChat, Puppet oder Docker (siehe auch Docker Training) . Es geht um mehr als Jenkins - es ist der Entwickler-Workflow, der Jenkins umgibt und sich über mehrere Tools erstreckt.

Neue Teams haben wenig Zeit, um zu lernen, wie sie ihre eigene Jenkins-Erfahrung zusammenstellen können - sie wollen ihre Markteinführungszeit verbessern, indem sie bessere Software schneller liefern. Die Zusammenstellung dieser idealen Jenkins-Erfahrung ist etwas, das wir gemeinsam als Gemeinschaft von Jenkins-Anwendern und Beitragenden definieren können. Im Laufe der Zeit ändern sich die Erwartungen der Entwickler an eine gute Benutzererfahrung, und die Mission von Blue Ocean ermöglicht es dem Jenkins-Projekt, darauf zu reagieren.





127.933
TEILNEHMENDE
2.538
SEMINARTHEMEN
31.833
DURCHGEFÜHRTE SEMINARE
aegallianzaxabayerElement 1boschdeutsche-bankdeutsche-postdouglasfordfujitsuhenkelhermeslufthansamercedesnokiasonytelekomvwzdf