Was ist JenkinsWarum sollte man ein Continuous Integration (CI)-Tool verwenden?

⚡ Intelligente Zusammenfassung

Jenkins ist der Open-Source-Automatisierungsserver, der jedes Mal Code erstellt und testet, wenn ein Entwickler Änderungen vornimmt, und so Continuous Integration von einer nächtlichen Aufgabe in einen Prozess verwandelt, der kontinuierlich während des gesamten Arbeitstages läuft.

  • 🔘 Zweck: Jenkins Orchestriert Build-, Test- und Deployment-Schritte automatisch nach jedem Commit.
  • ☑️ Herkunft: Im Jahr 2011 von Hudson abgespalten und heute der am weitesten verbreitete CI-Server.
  • ✅ Rohrleitungen: A JenkinsDie zusammen mit dem Code gespeicherte Datei definiert jede Phase des Build-Prozesses.
  • 🧪 Plugins: Über zweitausend Plugins verbinden Jenkins zu Git, Maven, Docker und Kubernetes.
  • ️ Abtausch: Selbsthosting bietet volle Kontrolle, bringt aber auch Serveradministrationsarbeit mit sich.

Jenkins Übersicht des Continuous-Integration-Servers

Was ist Jenkins?

Jenkins ist ein Open-Source-Continuous-Integration-Server, geschrieben in Java zur Orchestrierung einer Kette von Aktionen, um den Continuous Integration-Prozess auf automatisierte Weise zu erreichen. Jenkins Unterstützt den gesamten Entwicklungslebenszyklus von Software, von der Erstellung über das Testen, die Dokumentation und die Bereitstellung bis hin zu anderen Phasen des Softwareentwicklungszyklus.

Jenkins ist eine weltweit verbreitete Anwendung mit Hunderttausenden von Installationen, deren Anzahl täglich wächst. Durch die Verwendung JenkinsSoftwareunternehmen können ihren Softwareentwicklungsprozess beschleunigen, Jenkins kann Build- und Testprozesse schnell automatisieren.

Es handelt sich um eine serverbasierte Anwendung und benötigt einen Webserver wie Apache Tomcat. Der Grund Jenkins Die Software erfreute sich so großer Beliebtheit aufgrund ihrer Fähigkeit, wiederkehrende Aufgaben zu überwachen, die während der Projektentwicklung anfallen. Wenn Ihr Team beispielsweise entwickeltping ein Projekt Jenkins wird Ihre Projekt-Builds kontinuierlich testen und Ihnen die Fehler in frühen Entwicklungsstadien aufzeigen.

Hinweis: Bereitstellung der WAR-Datei in Apache Tomcat funktioniert zwar noch, aber aktuelle Versionen liefern einen eingebetteten Servlet-Container aus, daher Jenkins Läuft normalerweise von selbst. Die 2.555.x LTS-Reihe benötigt Java 21

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 ung?

Jenkins ist eine serverbasierte Anwendung und benötigt einen Webserver wie Apache Tomcat, um auf verschiedenen Plattformen wie WindowsLinux, macOSUnix usw. Zur Verwendung JenkinsSie müssen Pipelines erstellen, die aus einer Reihe von Schritten bestehen, die Jenkins Der Server wird es akzeptieren. Jenkins Eine Continuous Integration Pipeline ist ein leistungsstarkes Instrument, das aus einer Reihe von Tools besteht, die zum Hosten, Überwachen, Kompilieren und Testen von Code oder Codeänderungen entwickelt wurden, wie zum Beispiel:

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

In den aktuellen Versionen befinden sich diese Schritte in einem JenkinsDie Datei wurde neben dem Code eingecheckt. Jenkins Der Controller liest diese Datei und übergibt jede Phase an einen Agenten, also die Maschine, die die Arbeit tatsächlich ausführt.

Jenkins 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 Hudson-Open-Source-Community, also spaltete er Hudson ab und benannte es um in Jenkins.
  • Sowohl Hudson als auch Jenkins Sie operierten weiterhin unabhängig. Doch innerhalb kurzer Zeit Jenkins akquirierte zahlreiche Projekte und Mitwirkende, während Hudson bei lediglich 32 Projekten blieb. Mit der Zeit Jenkins wurde immer beliebter, und Hudson wird nicht mehr instand gehalten.

Warum Continuous Integration verwenden? Jenkins?

Manche Leute mögen denken, dass die altmodische Art der Entwicklungping Die Software ist der bessere Weg. Lassen Sie uns die Vorteile von CI verstehen. Jenkins mit dem folgenden Beispiel

Stellen wir uns vor, dass etwa 10 Entwickler an einem gemeinsamen Repository arbeiten. Einige Entwickler erledigen ihre Aufgabe in 25 Tagen, während andere 30 Tage benötigen.

Vorher Jenkins Nach Jenkins

Sobald alle Entwickler ihre zugewiesenen Codierungsaufgaben abgeschlossen hatten, übergaben sie ihren Code gleichzeitig. Later, Build wird getestet und bereitgestellt.

Code Der Commit wurde erstellt, und der Testzyklus war sehr selten; ein einziger Build wurde erst nach vielen Tagen durchgeführt.

Der Code wird erstellt und getestet, sobald der Entwickler den Code eincheckt. Jenkins wird den Code mehrmals am Tag kompilieren und testen.

Wenn der Build erfolgreich ist, dann Jenkins wird den Quellcode auf dem Testserver bereitstellen und das Bereitstellungsteam benachrichtigen.

Wenn der Build fehlschlägt, dann Jenkins wird die Fehler dem Entwicklerteam melden.

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 neu kompiliert wird, lässt sich leicht feststellen, wessen Code den Build-Fehler verursacht hat.
Code bauen 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 (Continuous Integration) eingeführt, der im Folgenden dargestellt wird. Die Software wurde erstellt und getestet, sobald ein Entwickler Code eincheckte. Falls ein Fehler entdeckt wird, kann der jeweilige Entwickler diesen schnell beheben.

Der nächtliche Build von Nokia wurde durch einen Commit-gesteuerten Continuous-Integration-Zyklus ersetzt.

Jenkins Plugins

Standardmäßig Jenkins bietet nur einen begrenzten Funktionsumfang. Wenn Sie Ihre Integration wünschen Jenkins Bei der Installation mit Versionskontrollsystemen wie Git müssen Sie außerdem Git-bezogene Plugins installieren. Tatsächlich ist dies auch für die Integration mit Tools wie Maven erforderlich. Amazon Für EC2 müssen Sie die entsprechenden Plugins in Ihrer Umgebung installieren. JenkinsWie der untenstehende Plugin-Manager zeigt.

Jenkins Plugin-Manager listet verfügbare Plugins auf, die zur Installation bereitstehen

Vorteile der Verwendung Jenkins

  • Jenkins Die Verwaltung erfolgt durch die sehr offene Gemeinschaft. Jeden Monat finden öffentliche Versammlungen statt, in denen die Öffentlichkeit Anregungen für die Weiterentwicklung erhält. Jenkins Projekt einfliessen.
  • Das Projekt verfolgt einen vorhersehbaren Veröffentlichungsrhythmus: Alle zwölf Wochen wird eine neue Basislinie für den Langzeitsupport festgelegt, auf der dann planmäßige Patch-Releases veröffentlicht werden.
  • Mit dem technologischen Fortschritt wächst auch die Technologie JenkinsDie Plugin-Datenbank umfasst mittlerweile über zweitausend Plugins. Mit Plugins Jenkins wird noch leistungsstärker und funktionsreicher.
  • Jenkins Das Tool unterstützt auch cloudbasierte Architekturen, sodass Sie diese bereitstellen können. Jenkins in Cloud-basierten Plattformen.
  • Der Grund warum Jenkins Seine Popularität verdankt es der Tatsache, dass es von einem Entwickler für Entwickler geschaffen wurde.

Nachteile der Verwendung Jenkins

Obwohl Jenkins ist ein sehr leistungsstarkes Werkzeug, aber es hat auch seine Schwächen.

  • Die Benutzeroberfläche ist veraltet und im Vergleich zu aktuellen UI-Trends nicht benutzerfreundlich, obwohl in neueren Versionen ein Großteil des Bildschirmdesigns modernisiert wurde.
  • Obwohl Jenkins Es wird von vielen Entwicklern geliebt, aber die Wartung ist nicht ganz einfach, weil Jenkins läuft auf einem Server und erfordert gewisse Kenntnisse als Serveradministrator, um dessen Aktivitäten zu überwachen.
  • Einer der Gründe, warum viele Menschen es nicht umsetzen Jenkins liegt an der Schwierigkeit bei der Installation und Konfiguration Jenkins.
  • Kontinuierliche Integrationen brechen aufgrund einiger kleiner Einstellungsänderungen regelmäßig ab. Die kontinuierliche Integration wird angehalten und erfordert daher etwas Aufmerksamkeit des Entwicklers.
  • Plugin-Abhängigkeitskonflikte treten auf, wenn viele Plugins zu unterschiedlichen Zeiten aktualisiert werden. Daher benötigen Plugin-Updates ein eigenes Wartungsfenster.

Wenn diese Kompromisse für Ihr Team von Bedeutung sind, vergleichen Sie die Besten Jenkins Alternative Werkzeuge und die umfassendere Liste von Top-Tools für die kontinuierliche Integration bevor man sich für einen selbstgehosteten Server entscheidet.

Häufig gestellte Fragen

Ja. Jenkins Es wird unter der MIT-Lizenz veröffentlicht und ist kostenlos herunterzuladen und auszuführen. Die Kosten sind indirekt: Server, Speicherplatz und der Zeitaufwand für die Administration, um einen selbstgehosteten Controller funktionsfähig zu halten.

Die 2.555.x Long-Term Support-Linie läuft auf Java 21, mit Java 25 wurde ebenfalls unterstützt; Java Version 17 wurde in Version 2.555.1 entfernt. Überprüfen Sie die Systemvoraussetzungen vor dem Upgrade, da ein veraltetes JDK den Start des Controllers verhindert.

A JenkinsDie Datei ist eine Textdatei, die die Pipeline-Definition enthält und zusammen mit dem Anwendungscode gespeichert wird. Sie kann in deklarativer oder skriptbasierter Syntax geschrieben werden und muss beibehalten werden.ping Die Versionskontrolle ermöglicht es, den Build wie jede andere Änderung überprüfbar zu machen.

Der Controller ist der Jenkins Eine Installation, die Arbeitsabläufe plant und die Weboberfläche bereitstellt. Ein Agent ist ein separater Rechner, der die ihm zugewiesenen Build-Schritte ausführt, die Last verteilt und Builds auf verschiedenen Betriebssystemen ermöglicht.

Maschinelle Lernmodelle gruppieren wiederholte Fehler, trennen echte Regressionen von fehlerhaften Tests und weisen auf den wahrscheinlich verantwortlichen Commit hin. Dadurch wird aus einem langen Konsolenprotokoll eine kurze, priorisierte Liste für den diensthabenden Entwickler.

GitHub-Copilot Entwirft deklarative Phasen und allgemeine Schritte aus einem Kommentar. RevPrüfen Sie jeden Vorschlag sorgfältig, da häufig Plugin-Schrittnamen erfunden werden, die auf Ihrem Controller nicht installiert sind.

Gehostete Dienste benötigen keine Serverwartung und starten schneller, während Jenkins ermöglicht die vollständige Kontrolle über Hardware, Plugins und Datenspeicherort. Teams mit ungewöhnlichen Entwicklungsumgebungen behalten in der Regel bei JenkinsBei kleineren Projekten wird oft ein gehosteter Runner bevorzugt.

Ja. Build-Schritte können aufrufen Maven, Gradle oder Ameise, JUnit, TestNG or Selenium Die Ergebnisse werden auf der Jobseite veröffentlicht, sodass eine fehlgeschlagene Suite den gesamten Build negativ markiert.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: