Was ist Jenkins? Warum das Continuous-Integration-Tool (CI) verwenden?
Was ist Jenkins?
Jenkins ist ein Open-Source-Continuous-Integration-Server, geschrieben in Java zum Orchestrieren einer Aktionskette, um den Continuous-Integration-Prozess auf automatisierte Weise zu erreichen. Jenkins unterstรผtzt den gesamten Entwicklungslebenszyklus von Software, vom Erstellen, Testen, Dokumentieren der Software, Bereitstellen und anderen Phasen des Softwareentwicklungslebenszyklus.
Jenkins ist eine weltweit weit verbreitete Anwendung mit rund 300 Installationen und tรคglich mehr. Durch den Einsatz von Jenkins kรถnnen Softwareunternehmen ihren Softwareentwicklungsprozess beschleunigen, da Jenkins Build und Test in hohem Tempo automatisieren kann.
Es handelt sich um eine serverbasierte Anwendung und erfordert einen Webserver wie Apache Tomcat. Der Grund, warum Jenkins-Software so beliebt wurde, liegt darin, dass sie sich wiederholende Aufgaben รผberwacht, die wรคhrend der Entwicklung eines Projekts anfallen. Wenn Ihr Team beispielsweise ein Projekt entwickelt, testet Jenkins Ihre Projekt-Builds kontinuierlich und zeigt Ihnen die Fehler in frรผhen Phasen Ihrer Entwicklung auf.
Was ist kontinuierliche Integration?
Kontinuierliche Integration ist ein Prozess, bei dem Codeรคnderungen von mehreren Entwicklern mehrmals in ein einzelnes Projekt integriert werden. Die Software wird unmittelbar nach einem Code-Commit getestet. Bei jedem Code-Commit wird Code erstellt und getestet. Wenn der Test bestanden wird, wird der Build fรผr die Bereitstellung getestet. Wenn die Bereitstellung erfolgreich ist, wird der Code in die Produktion รผbertragen.
Dieses Festschreiben, Erstellen, Testen und Bereitstellen ist ein kontinuierlicher Prozess und daher der Name kontinuierliche Integration/Bereitstellung.
Wie funktioniert Jenkins?
Jenkins ist eine serverbasierte Anwendung und erfordert einen Webserver wie Apache Tomcat, um auf verschiedenen Plattformen wie z. B. ausgefรผhrt zu werden WindowsLinux, macOS, Unix usw. Um Jenkins zu verwenden, mรผssen Sie Pipelines erstellen, bei denen es sich um eine Reihe von Schritten handelt, die ein Jenkins-Server ausfรผhrt. Die Jenkins Continuous Integration Pipeline ist ein leistungsstarkes Instrument, das aus einer Reihe von Tools besteht, die darauf ausgelegt sind Gastgeber, Monitor, kompilieren und Test Code oder Codeรคnderungen, wie:
- Kontinuierlicher Integrationsserver (Jenkins, Bamboo, CruiseControl, TeamCity, und andere)
- Quellcodeverwaltungstool (z. B. CVS, SVN, GIT, Mercurial, Perforce, ClearCase und andere)
- Build-Tool (Make, ANT, Maven, Ivy, Gradle, und andere)
- Automatisierungstest-Framework (Selenium, Appium, TestComplete, UFT und andere)
Jenkin-Geschichte
- Kohsuke Kawaguchi, ein Java Ein Entwickler, der bei SUN Microsystems arbeitete, hatte es satt, immer wieder Code zu erstellen und Fehler zu beheben. 2004 entwickelte er einen Automatisierungsserver namens Hudson, der Build- und Testaufgaben automatisiert.
- In 2011, Oracle Der Eigentรผmer von Sun Microsystems hatte einen Streit mit der Open-Source-Community von Hudson, sodass er Hudson abspaltete und in Jenkins umbenannte.
- Sowohl Hudson als auch Jenkins arbeiteten weiterhin unabhรคngig voneinander. Doch in kurzer Zeit gewann Jenkins viele Projekte und Mitwirkende hinzu, wรคhrend Hudson nur noch 32 Projekte hatte. Mit der Zeit wurde Jenkins immer beliebter und Hudson wird nicht mehr gepflegt.
Warum Continuous Integration mit Jenkins verwenden?
Manche Leute denken vielleicht, dass die altmodische Art der Softwareentwicklung die bessere ist. Lassen Sie uns die Vorteile von CI mit Jenkins anhand des folgenden Beispiels verstehen
Stellen wir uns vor, dass etwa 10 Entwickler an einem arbeiten freigegebenes Repository. Einige Entwickler erledigen ihre Aufgabe in 25 Tagen, wรคhrend andere 30 Tage brauchen.
| Vor Jenkins | Nach Jenkins |
|---|---|
| Sobald alle Entwickler ihre zugewiesenen Codierungsaufgaben abgeschlossen hatten, รผbergaben sie ihren Code gleichzeitig. Later, Build wird getestet und bereitgestellt.
Der Code-Commit wurde erstellt, und der Testzyklus war sehr selten, und ein einzelner Build wurde erst nach vielen Tagen durchgefรผhrt. |
Der Code wird erstellt und getestet, sobald der Entwickler Code festschreibt. Jenkin wird im Laufe des Tages mehrmals Code erstellen und testen
Wenn der Build erfolgreich ist, stellt Jenkins die Quelle auf dem Testserver bereit und benachrichtigt das Bereitstellungsteam. Wenn der Build fehlschlรคgt, benachrichtigt Jenkins das Entwicklerteam รผber die Fehler. |
| Da der Code auf einmal erstellt wurde, mussten einige Entwickler warten, bis andere Entwickler mit dem Codieren fertig waren, um ihren Build zu รผberprรผfen | Der Code wird unmittelbar nach jedem Commit des Entwicklers erstellt. |
| Es ist keine leichte Aufgabe, Fehler fรผr mehrere Commits zu isolieren, zu erkennen und zu beheben. | Da der Code nach jedem Commit eines einzelnen Entwicklers erstellt wird, lรคsst sich leicht erkennen, wessen Code den Fehler beim Erstellen verursacht hat |
| Code-Build und Testprozess sind vollstรคndig manuell, daher besteht eine hohe Fehlerwahrscheinlichkeit. | Automatisierter Build- und Testprozess spart Zeit und reduziert Fehler. |
| Der Code wird bereitgestellt, sobald alle Fehler behoben und getestet sind. | Der Code wird nach jedem erfolgreichen Build und Test bereitgestellt. |
| Der Entwicklungszyklus ist langsam | Der Entwicklungszyklus ist schnell. Neue Funktionen stehen den Benutzern leichter zur Verfรผgung. Erhรถht den Gewinn. |
Praxisnahe Fallstudie zur kontinuierlichen Integration
Ich bin sicher, dass Sie alle das alte Nokia-Handy kennen. Nokia hat frรผher ein Verfahren namens Nightly Build implementiert. Nach mehreren Commits von verschiedenen Entwicklern im Laufe des Tages wurde die Software jede Nacht erstellt. Da die Software nur einmal am Tag erstellt wurde, ist es sehr mรผhsam, die Fehler in einer groรen Codebasis zu isolieren, zu identifizieren und zu beheben.
LaterSie haben den Ansatz der kontinuierlichen Integration รผbernommen. Die Software wurde erstellt und getestet, sobald ein Entwickler Code festgeschrieben hatte. Wird ein Fehler festgestellt, kann der jeweilige Entwickler den Mangel schnell beheben.
Jenkins-Plugins
Standardmรครig verfรผgt Jenkins รผber einen begrenzten Funktionsumfang. Wenn Sie Ihre Jenkins-Installation mit Versionskontrolltools wie Git integrieren mรถchten, mรผssen Sie Plugins fรผr Git installieren. Tatsรคchlich ist fรผr die Integration mit Tools wie Maven Amazon EC2 mรผssen Sie entsprechende Plugins in Ihren Jenkins installieren.

Vorteile der Verwendung von Jenkins
- Jenkins wird von der Community verwaltet, die sehr offen ist. Jeden Monat finden รถffentliche Versammlungen statt und es werden Anregungen aus der รffentlichkeit fรผr die Entwicklung des Jenkins-Projekts entgegengenommen.
- Bisher sind rund 280 Tickets geschlossen und das Projekt verรถffentlicht alle drei Monate eine stabile Version.
- Mit der Weiterentwicklung der Technologie wรคchst auch Jenkins. Bisher hat Jenkins rund 320 Plugins in seiner Plugin-Datenbank verรถffentlicht. Mit Plugins wird Jenkins noch leistungsfรคhiger und funktionsreicher.
- Das Jenkins-Tool unterstรผtzt auch Cloud-basierte Architektur, sodass Sie Jenkins auf Cloud-basierten Plattformen bereitstellen kรถnnen.
- Der Grund, warum Jenkins populรคr wurde, liegt darin, dass es von einem Entwickler fรผr Entwickler erstellt wurde.
Nachteile der Verwendung von Jenkins
Obwohl Jenkins ein sehr leistungsfรคhiges Tool ist, hat es seine Schwรคchen.
- Die Benutzeroberflรคche ist veraltet und im Vergleich zu aktuellen UI-Trends nicht benutzerfreundlich.
- Obwohl Jenkins bei vielen Entwicklern beliebt ist, ist die Wartung nicht so einfach, da Jenkins auf einem Server lรคuft und einige Kenntnisse als Serveradministrator erfordert, um seine Aktivitรคten zu รผberwachen.
- Einer der Grรผnde, warum viele Leute Jenkins nicht implementieren, liegt in der Schwierigkeit, Jenkins zu installieren und zu konfigurieren.
- Kontinuierliche Integrationen brechen aufgrund einiger kleiner Einstellungsรคnderungen regelmรครig ab. Die kontinuierliche Integration wird angehalten und erfordert daher etwas Aufmerksamkeit des Entwicklers.
Fazit
- Bei der kontinuierlichen Integration wird die Software nach einem Code-Commit sofort erstellt und getestet
- Jenkins wird zur Orchestrierung einer Aktionskette fรผr die kontinuierliche Integration in einem Softwareprojekt verwendet
- Vor Jenkins haben alle Entwickler, nachdem sie ihre zugewiesenen Codierungsaufgaben abgeschlossen hatten, ihren Code alle gleichzeitig festgeschrieben. Later, Build wird getestet und bereitgestellt.
- Nach Jenkins wird der Code erstellt und getestet, sobald der Entwickler den Code festschreibt. Jenkin wird im Laufe des Tages mehrmals Code erstellen und testen
- Standardmรครig verfรผgt Jenkins รผber einen begrenzten Funktionsumfang. Wenn Sie Ihre Jenkins-Installation mit Versionskontrolltools wie Git integrieren mรถchten, mรผssen Sie Plugins fรผr Git installieren. รberprรผfen Sie auch beste Jenkins-Alternative-Tools
- Der grรถรte Vorteil von Jenkins ist, dass es von der Community verwaltet wird, die รถffentliche Versammlungen abhรคlt und Beitrรคge der รffentlichkeit fรผr die Entwicklung von Jenkins-Projekten entgegennimmt.
- Der grรถรte Nachteil von Jenkins ist, dass seine Benutzeroberflรคche veraltet und im Vergleich zu aktuellen UI-Trends nicht benutzerfreundlich ist. Wenn Sie andere Optionen in Betracht ziehen, die mรถglicherweise ein moderneres Benutzererlebnis bieten, mรถchten Sie vielleicht einige davon erkunden Top-Tools fรผr die kontinuierliche Integration erhรคltlich.

