Jenkins

Jenkins

Copyright © Shutterstock/tahirduran

Was ist Jenkins?

Jenkins ist ein in Java geschriebener Open-Source Automatisierungsserver. Es hilft dabei, den nicht-menschlichen Teil zu automatisieren, wobei die kontinuierliche Integration und die technischen Aspekte der kontinuierlichen Bereitstellung erleichtert werden. Bei dem Server handelt es sich um ein serverbasiertes System, das in Servlet-Containern wie Apache Tomcat ausgeführt wird. Es unterstützt Versionskontrolle-Tools wie AccuRev, CVS, Subversion, Git, Mercurial, TD/OMS, Perforce, RTC und ClearCase und kann Apache Ant-, Apache Maven- und Sbt-basierte Projekte sowie beliebige Shellskripts und Windows-Stapelbefehle ausführen. Der Schöpfer ist Kohsuke Kawaguchi. Unter MIT-Lizenz veröffentlicht, ist Jenkins eine freie Software.

Builds (Entwicklungsstufe einer Software) können auf verschiedene Weise ausgelöst werden, z.B. durch Festschreiben in einem Versionskontrollsystem, durch Zeitplanung über einen cron-ähnlichen Mechanismus und durch Abfragen einer bestimmten Build-URL. Es kann auch ausgelöst werden, nachdem die anderen Builds in der Warteschlange abgeschlossen wurden. Die Funktionalität kann mit Plugins erweitert werden.

Das Projekt dieser Software hieß ursprünglich Hudson und wurde nach einem Streit mit Oracle umbenannt. Sein Zweig Hudson wurde einige Zeit von Oracle weiterentwickelt, bevor er an die Eclipse Foundation gespendet wurde. Hudson wird nicht mehr gewartet und wurde im Februar 2017 als veraltet angekündigt.

Entwicklung

Jenkins wurde ursprünglich als Hudson-Projekt entwickelt. Die Entwicklung von Hudson begann im Jahr 2004 bei Sun Microsystems. Es wurde erstmals im Februar 200 in Java.net veröffentlicht. Um 2007 wurde Hudson als eine bessere Alternative zu CruiseControl und anderen Open-Source-Build-Servern bekannt. Bei der JavaOne-Konferenz im Mai 2008 gewann die Software den sog. Duke’s Choice Award in der Kategorie Developer Solutions.

Im Jahr 2010 kam es in der Hudson-Community zu einem Problem hinsichtlich der genutzten Infrastruktur, das immer mehr Fragen zur Verwaltung und Kontrolle von Oracle aufwarf. Es fanden Verhandlungen zwischen den wichtigsten Projektbeteiligten und Oracle statt und obwohl es viele Bereiche der Vereinbarung gab, war der Markenname “Hudson” ein entscheidender Knackpunkt, nachdem Oracle Ende 2010 das Recht auf den Namen beanspruchte und eine Marke beantragte. Dies führte im Januar 2011 zu einem Aufruf zur Abstimmung, um den Projektnamen von “Hudson” zu ändern. Der Vorschlag wurde noch im selben Monat mit überwältigender Mehrheit von der Gemeinschaft gebilligt, wodurch das Projekt Jenkins geschaffen wurde.

Im Februar 2011 gab Oracle die Beabsichtigung an, die Entwicklung von Hudson fortzusetzen und erachtet Jenkins eher als Abzweigung anstatt einer Umbenennung. Jenkins und Hudson setzten daher weiterhin zwei unabhängige Projekte fort. Im Mai 2018 hatte die Jenkins-Organisation auf GitHub 650 Projektmitglieder und ungefähr 1.900 öffentliche Repositorien – verglichen mit den 28 Projektmitgliedern von Hudson und 20 öffentlichen Repositorien.

Plugins

Für Jenkins wurden Plugins (Software-Komponente/-Erweiterung) veröffentlicht, die seine Verwendung auf Projekte erweitern und die in anderen Sprachen als Java geschrieben sind. Für die Integration in die meisten Versionskontrollsysteme und Fehlerdatenbanken stehen Plugins zur Verfügung. Viele Build-Tools werden über ihre jeweiligen Plugins unterstützt. Sie können auch das Aussehen von Jenkins ändern oder neue Funktionen hinzufügen. Es gibt eine Reihe von Plugins für Unit-Tests, die Testberichte in verschiedenen Formaten erstellen. Jenkins kann die Berichte anzeigen, Trends generieren und in der GUI (= Graphical User Interface; grafische Oberfläche) darstellen.

Mailer

Der Mailer ermöglicht das Konfigurieren von E-Mail-Benachrichtigungen für Build-Ergebnisse. Jenkins sendet E-Mails an die angegebenen Empfänger, wenn ein bestimmtes Ereignis eintritt, wie z.B.:

1. Fehlerhafter Build
2. Instabiler Build
3. Erfolgreicher Build nach einem fehlgeschlagenen Build, der anzeigt, dass eine Krise vorbei ist
4. Instabiler Build nach einem erfolgreichen Build, war auf eine Regression hinweist

Credentials (Zeugnisse)

Sie erlauben das Speichern von Anmeldeinformationen und stellen eine standardisierte API für andere Plugins bereit, um verschiedene Arten von Anmeldeinformationen zu speichern und abzurufen.

Überwachung externer Jobs

Die Überwachung externer Jobs fügt die Möglichkeit hinzu, das Ergebnis von extern ausgeführten Jobs zu überprüfen.

SSH-Agenten

Dieses Plugin ermöglicht die Verwalten von Agenten (früher als “Slaves” bekannt), die auf den sog. *nix-Computern über SSH laufen. Es wird eine neue Art der Agentenstartmethode hinzugefügt.

1. Öffnen einer SSH-Verbindung zum angegebenen Host als angegebenen Benutzernamen.
2. Überprüfung der Standardversion von Java für diesen Benutzer.
3. Falls Standardversion mit Jenkins nicht kompatibel ist, eine andere Java-Version nutzen.
4. Bei Vorhandensein einer geeigneten Java-Version, die neueste Agent.jar über SFTP kopieren.
5. Agentenprozess starten.

Javadoc

Dieses Plugin erweitert Jenkins um Javadoc-Unterstützung. Diese Funktion war früher Teil des Kerns, wurde jedoch seit Jenkins Version 1.431 in separate Plugins aufgeteilt.
Das Plugin ermöglicht die Auwahl von “Publish Javadoc” als Post-Build-Aktion, wobei das Verzeichnis angegeben wird, in dem der Javadoc gesammelt werden soll und ob für jeden erfolgreichen Build eine Aufbewahrung erwartet wird.

Sicherheit

Die Sicherheit hängt von zwei Faktoren ab: Zugangskontrolle und Schutz vor externen Bedrohungen. Die Zugriffskontrolle kann auf zwei Arten angepasst werden: Benutzerauthentifizierung und Autorisierung. Der Schutz vor externen Bedrohungen wie CSRF-Angriffen und schädlichen Builds wird ebenfalls unterstützt.


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte