Was ist Jenkins? CI-Tool (Continuous Integration)

Inhaltsverzeichnis:

Anonim

Was ist Jenkins?

Jenkins ist ein Open-Source-Continuous-Integration-Server, der eine Reihe von Aktionen koordinieren kann, mit denen der Continuous-Integration-Prozess (und nicht nur) automatisiert erreicht werden kann.

Jenkins ist kostenlos und vollständig in Java geschrieben. Jenkins ist eine weltweit weit verbreitete Anwendung mit rund 300.000 Installationen, die von Tag zu Tag wächst.

Es ist eine serverbasierte Anwendung und erfordert einen Webserver wie Apache Tomcat. Der Grund, warum Jenkins so beliebt wurde, ist die Überwachung wiederholter Aufgaben, die während der Entwicklung eines Projekts auftreten. Wenn Ihr Team beispielsweise ein Projekt entwickelt, testet Jenkins kontinuierlich Ihre Projektbuilds und zeigt Ihnen die Fehler in frühen Phasen Ihrer Entwicklung.

Durch die Verwendung von Jenkins können Softwareunternehmen ihren Softwareentwicklungsprozess beschleunigen, da Jenkins das Erstellen und Testen schnell automatisieren kann. Jenkins unterstützt den gesamten Entwicklungslebenszyklus von Software vom Erstellen, Testen, Dokumentieren der Software, Bereitstellen und anderen Phasen eines Softwareentwicklungslebenszyklus.

In diesem Tutorial lernen Sie

  • Was ist Jenkins?
  • Was ist kontinuierliche Integration?
  • Jenkin Geschichte
  • Warum sollte die kontinuierliche Integration mit Jenkins verwendet werden?
  • Realistische Fallstudie zur kontinuierlichen Integration
  • Vorteile der Verwendung von Jenkins
  • Nachteile der Verwendung von Jenkins

Was ist kontinuierliche Integration?

Bei der kontinuierlichen Integration nach einem Code-Commit wird die Software sofort erstellt und getestet. In einem großen Projekt mit vielen Entwicklern werden Commits mehrmals am Tag durchgeführt. Mit jedem Commit wird Code erstellt und getestet. Wenn der Test bestanden wurde, 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.

Eine Continuous Integration Pipeline ist ein leistungsstarkes Instrument, das aus einer Reihe von Tools besteht , mit denen Code oder Codeänderungen gehostet , überwacht , kompiliert und getestet werden können, z.

  • Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity und andere)
  • Quellcodeverwaltungs-Tool (z. B. CVS, SVN, GIT, Mercurial, Perforce, ClearCase und andere)
  • Build-Tool (Make, ANT, Maven, Ivy, Gradle und andere)
  • Framework für Automatisierungstests (Selen, Appium, TestComplete, UFT und andere)

Jenkin Geschichte

  • Kohsuke Kawaguchi, ein Java-Entwickler, der bei SUN Microsystems arbeitet, hatte es satt, den Code zu erstellen und Fehler wiederholt zu beheben. Im Jahr 2004 wurde ein Automatisierungsserver namens Hudson erstellt, der Build- und Testaufgaben automatisiert.
  • Im Jahr 2011 hatte Oracle, dem Sun Microsystems gehörte, einen Streit mit der Open-Source-Community von Hudson, weshalb sie Hudson gabelten und in Jenkins umbenannten.
  • Sowohl Hudson als auch Jenkins arbeiteten weiterhin unabhängig voneinander. Aber in kurzer Zeit erwarb Jenkins viele Projekte und Mitwirkende, während Hudson mit nur 32 Projekten blieb. Mit der Zeit wurde Jenkins immer beliebter und Hudson wird nicht mehr gepflegt.

Warum sollte die kontinuierliche Integration mit Jenkins verwendet werden?

Einige Leute denken vielleicht, dass die altmodische Art, die Software zu entwickeln, die bessere ist. Lassen Sie uns die Vorteile von CI mit Jenkins anhand des folgenden Beispiels verstehen

Stellen wir uns vor, es gibt ungefähr 10 Entwickler, die an einem gemeinsam genutzten Repository arbeiten. Einige Entwickler erledigen ihre Aufgabe in 25 Tagen, während andere 30 Tage benötigen.

Vor Jenkins Nach Jenkins
Nachdem alle Entwickler ihre zugewiesenen Codierungsaufgaben abgeschlossen hatten, haben sie ihren Code alle gleichzeitig festgeschrieben. Später wird Build getestet und bereitgestellt. Code-Commit wurde erstellt, und der Testzyklus war sehr selten, und nach vielen Tagen wurde ein einzelner Build durchgeführt. Der Code wird erstellt und getestet, sobald der Entwickler den Code festschreibt. Jenkin erstellt und testet Code mehrmals am Tag. 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 die Codierung abgeschlossen haben, um ihre Erstellung zu überprüfen Der Code wird unmittelbar nach dem Festschreiben eines 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, kann leicht festgestellt werden, durch welchen Code der Build fehlgeschlagen ist
Die Codeerstellung und der Testprozess erfolgen vollständig manuell, daher besteht eine große Wahrscheinlichkeit, dass Fehler auftreten. Automatisierter Build- und Testprozess, der Zeit spart und Fehler reduziert.
Der Code wird bereitgestellt, sobald alle Fehler behoben und getestet wurden. 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. Steigert den Gewinn.

Realistische Fallstudie zur kontinuierlichen Integration

Ich bin sicher, Sie alle kennen das alte Nokia-Telefon. Nokia implementierte ein Verfahren namens Nightly Build. Nach mehreren Commits von verschiedenen Entwicklern während des Tages wurde die Software jede Nacht erstellt. Da die Software nur einmal am Tag erstellt wurde, ist es sehr schwierig, die Fehler in einer großen Codebasis zu isolieren, zu identifizieren und zu beheben.

Später verfolgten sie den Ansatz der kontinuierlichen Integration. Die Software wurde erstellt und getestet, sobald ein Entwickler Code festgeschrieben hat. Wird ein Fehler festgestellt, kann der jeweilige Entwickler den Fehler schnell beheben.

Jenkins Plugins

Standardmäßig verfügt Jenkins über eine begrenzte Anzahl von Funktionen. Wenn Sie Ihre Jenkins-Installation in Versionskontrolltools wie Git integrieren möchten, müssen Sie Plugins installieren, die sich auf Git beziehen. Für die Integration mit Tools wie Maven und Amazon EC2 müssen Sie die entsprechenden Plugins in Ihren Jenkins installieren.

Plugins-Integration in Jenkins

Vorteile der Verwendung von Jenkins

  • Jenkins wird von der Community verwaltet, die sehr offen ist. Jeden Monat halten sie öffentliche Versammlungen ab und nehmen Beiträge der Öffentlichkeit für die Entwicklung des Jenkins-Projekts entgegen.
  • Bisher sind rund 280 Tickets geschlossen, und das Projekt veröffentlicht alle drei Monate eine stabile Veröffentlichung.
  • Mit der Technologie wächst auch Jenkins. Bisher hat Jenkins rund 320 Plugins in seiner Plugins-Datenbank veröffentlicht. Mit Plugins wird Jenkins noch leistungsfähiger und funktionsreicher.
  • Jenkins unterstützt auch eine Cloud-basierte Architektur, sodass Sie Jenkins auf Cloud-basierten Plattformen bereitstellen können.
  • Der Grund, warum Jenkins populär wurde, ist, dass es von einem Entwickler für Entwickler erstellt wurde.

Nachteile der Verwendung von Jenkins

Obwohl Jenkins ein sehr mächtiges Werkzeug ist, hat es seine Mängel.

  • Die Benutzeroberfläche ist veraltet und im Vergleich zu aktuellen UI-Trends nicht benutzerfreundlich.
  • Obwohl Jenkins von vielen Entwicklern geliebt wird, ist es nicht so einfach, es zu warten, da Jenkins auf einem Server ausgeführt wird und einige Fähigkeiten als Serveradministrator erfordert, um seine Aktivität zu überwachen.
  • Einer der Gründe, warum viele Leute Jenkins nicht implementieren, liegt in der Schwierigkeit, Jenkins zu installieren und zu konfigurieren.
  • Kontinuierliche Integrationen werden aufgrund einiger kleiner Einstellungsänderungen regelmäßig unterbrochen. Die kontinuierliche Integration wird angehalten und erfordert daher einige Aufmerksamkeit der Entwickler.

Fazit:

  • Bei der kontinuierlichen Integration wird die Software nach einem Code-Commit sofort erstellt und getestet
  • Jenkins ist ein Open Source Continuous Integration-Server, der eine Reihe von Aktionen koordinieren kann
  • Vor Jenkins, als alle Entwickler ihre zugewiesenen Codierungsaufgaben erledigt hatten, haben sie ihren Code alle gleichzeitig festgeschrieben. Später wird Build getestet und bereitgestellt.
  • Nach Jenkins wird der Code erstellt und getestet, sobald der Entwickler den Code festschreibt. Jenkin wird tagsüber mehrmals Code erstellen und testen
  • Standardmäßig verfügt Jenkins über eine begrenzte Anzahl von Funktionen. Wenn Sie Ihre Jenkins-Installation in Versionskontrolltools wie Git integrieren möchten, müssen Sie Plugins installieren, die sich auf Git beziehen
  • Die größten Vorteile von Jenkins sind, dass es von der Community verwaltet wird, die öffentliche Versammlungen abhält und Beiträge der Öffentlichkeit für die Entwicklung von Jenkins-Projekten einholt
  • Der größte Nachteil von Jenkin ist, dass seine Benutzeroberfläche im Vergleich zu aktuellen UI-Trends veraltet und nicht benutzerfreundlich ist.