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.

Praxisnahe Fallstudie zur kontinuierlichen Integration

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.

Jenkins-Plugins
Plugin-Integration in Jenkins

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.