Das bessere CI-Tool im Jahr 2022?

Betrachten wir eingehend zwei weitverbreitete Continuous Integration-Tools und ihre jeweiligen Eigenheiten.

Die Vorgehensweisen im Softwareentwicklungszyklus haben sich in den vergangenen zehn Jahren beträchtlich gewandelt.

Ehemals dominierte das Wasserfallmodell, dann hielt die agile Methodik Einzug, welche auf iterativer Entwicklung basierte. Heutzutage, mit dem DevOps-Ansatz, werden sowohl Entwicklung als auch Betrieb iterativ und kontinuierlich vorangetrieben, bis die gesamte Anwendung fertiggestellt und bereit für den Einsatz ist.

Der Begriff CI/CD, der für Continuous Integration und Continuous Delivery steht, erfreut sich großer Beliebtheit. Er beschreibt eine DevOps-Praxis, die darauf abzielt, die Entwicklung und Bereitstellung von Anwendungen beschleunigt und verlässlicher zu gestalten. Es ist eine Methode, die sämtliche Phasen, von der Anforderung bis zur Produktionsbereitstellung, mithilfe eines CI/CD-Tools automatisiert. Diese Herangehensweise ist weitaus effizienter und sicherer als manuelle Prozesse.

Auf dem Markt sind mittlerweile zahlreiche CI/CD-Werkzeuge verfügbar, was die Auswahl der geeigneten Tools zu einer Herausforderung machen kann.

Jenkins: Eine detaillierte Betrachtung

Jenkins, ein Open-Source-Tool, hat sich als eine der meistgenutzten Lösungen für kontinuierliche Integration etabliert. Es gilt als De-facto-Standard in diesem Bereich.

Jenkins, geschrieben in Java, kann auf diversen Betriebssystemen wie Windows oder Linux installiert werden. Ursprünglich als Build-Automatisierungswerkzeug für Java-Anwendungen konzipiert, hat es sich stetig weiterentwickelt und bietet nun über 1400 Plugins zur einfachen Integration mit anderen Plattformen und Tools.

Jenkins ist ein zentrales Werkzeug im Bereich der kontinuierlichen Integration und Auslieferung (Continuous Delivery). Es ist einfach zu installieren und bietet ein Dashboard für das Projektmanagement, das bequem über einen Browser erreichbar ist.

Entwickler nutzen Jenkins, um ihren Code automatisch zu bauen, zu integrieren, zu testen und bereitzustellen. Nach dem Einchecken des Codes durch die Entwickler übernimmt Jenkins den geänderten Quellcode, initiiert einen Build und führt bei Bedarf Tests durch. Das Ergebnis wird im Jenkins-Dashboard angezeigt und kann bei Bedarf eine Benachrichtigung an den Entwickler senden.

TeamCity: Eine Analyse

TeamCity, ein kommerzieller CI/CD-Server, basiert ebenfalls auf Java und wurde von JetBrains entwickelt.

TeamCity wirbt mit dem Slogan „Leistungsstarke Continuous Integration out of the box“ und wird diesem Anspruch gerecht. Es bietet nahezu alle Funktionen von Jenkins, ergänzt durch einige zusätzliche Features. TeamCity lässt sich in Docker integrieren, um Container automatisch über docker-compose zu erstellen. Es bietet zudem Integrationsunterstützung für das Jira-Tool zur einfachen Problemverfolgung.

TeamCity unterstützt das .NET-Framework und kann problemlos in verschiedene IDEs wie Eclipse oder Visual Studio integriert werden. Durch die Integration zur Erstellung eines Artefakt-Repositorys kann TeamCity Artefakte im Dateisystem des TeamCity-Servers oder in einem externen Speicher ablegen.

Die kostenlose Version von TeamCity (Professional Server Lizenz) ermöglicht bis zu 100 Builds und 3 Build-Agenten ohne zusätzliche Kosten.

Jenkins versus TeamCity: Ein Vergleich

Open-Source versus Kommerziell

Der wesentlichste Unterschied liegt in der Natur der beiden Tools: Jenkins ist ein Open-Source-Tool für kontinuierliche Integration, während TeamCity eine kommerzielle Lösung darstellt. Jenkins wird unter der MIT-Lizenz veröffentlicht und von einer weltweiten Entwicklergemeinschaft unterstützt. TeamCity wird von JetBrains entwickelt und gewartet.

Benutzeroberfläche

TeamCity zeichnet sich durch eine ansprechende Benutzeroberfläche aus, die insbesondere Einsteiger im Bereich der kontinuierlichen Integration anspricht. Diese Oberfläche ermöglicht es, Builds zu taggen, zu kommentieren und anzupinnen, was die Organisation erleichtert.

Die Benutzeroberfläche von Jenkins wirkt eher traditionell und bietet aus Sicht der Benutzerfreundlichkeit noch erhebliches Verbesserungspotenzial.

Exklusive Funktionen

Obwohl Jenkins nicht über eine Fülle integrierter Funktionen verfügt, bietet das umfangreiche Plugin-Ökosystem zahlreiche Funktionalitäten, die bei anderen CI-Tools nicht zu finden sind. Diese Plugins ermöglichen beispielsweise die Erstellung von Builds und die Codeanalyse zur Verbesserung der Codequalität.

TeamCity hingegen verfügt über diverse „Out-of-the-Box“-Funktionen, die über die Standardfunktionen von CI-Tools hinausgehen. Es unterstützt mehrere Plattformen wie Java, Ruby, .NET usw. Die Erstellung von Docker-Images ist ebenfalls möglich. Mit der Unterstützung von Bugzilla und Jira kann die Problemverfolgung vereinfacht werden. Zudem werden Build-Änderungen und der Fehlerverlauf gespeichert, was die Analyse vergangener Statistiken und die Durchführung früherer Builds erleichtert.

Installation

Für die Installation von Jenkins muss Java auf dem System installiert sein. Die Einrichtung gestaltet sich unkompliziert, wenn Java bereits vorhanden ist. Nach der Installation kann die Arbeit über die Weboberfläche von Jenkins aufgenommen werden.

Die Installation von TeamCity ist ebenfalls recht einfach. Nach dem Download des TeamCity-Servers müssen die Anweisungen in der Dokumentation befolgt werden.

Integrationen

Im Bereich der Integrationsmöglichkeiten übertrifft Jenkins die Konkurrenz bei weitem. Die Popularität von Jenkins auf dem Markt beruht maßgeblich auf der Verfügbarkeit von Hunderten kostenloser Plugins.

TeamCity bietet im Vergleich zu Jenkins zwar weniger Plugin-Integrationen, jedoch einige exklusive, die zu den „Out-of-the-Box“-Funktionen beitragen. Es unterstützt das .NET-Framework und die Integration mit Visual Studio Team Services, was eine Cloud-Integration mit Anbietern wie AWS, Azure, GCP und VMware ermöglicht.

Sicherheit

Der kommerzielle Charakter von TeamCity gewährleistet durch die Unterstützung von JetBrains eine hohe Priorität auf Sicherheitsaspekte. TeamCity bietet die Integration mit dem Snyk-Sicherheits-Plugin, das Schwachstellen-Scans in der Build-Pipeline ermöglicht. Dies hilft, potenzielle Risiken und Bedrohungen zu identifizieren und zu beheben.

Da Jenkins Open Source ist, können sich Risikominderungsmaßnahmen verzögern, da alles von der Entwicklergemeinschaft abhängt.

Community

Die Jenkins-Community ist umfangreicher als die von TeamCity. Da Jenkins Open Source ist, kann jeder Entwickler zu diesem Projekt beitragen. Täglich wirken Entwickler an der Weiterentwicklung mit, um neue Funktionen hinzuzufügen und das Tool zu verbessern.

TeamCity hingegen wird von JetBrains gepflegt und hat eine professionelle Support-Community zur Weiterentwicklung.

Preisgestaltung

Jenkins ist kostenlos nutzbar, was es für viele Unternehmen zur bevorzugten Wahl macht. Unternehmen sparen durch die Verwendung eines kostenlosen CI-Tools wie Jenkins erhebliche Kosten.

TeamCity ist nicht kostenlos und bietet zwei Lizenzmodelle: Professional Server und Enterprise Server. Die Professional Server-Lizenz ermöglicht die kostenlose Nutzung von 100 Build-Konfigurationen und 3 Build-Agenten. Für zusätzliche Builds und Agenten fallen Kosten an (299 $ für 1 zusätzlichen Build-Agenten und 10 Build-Konfigurationen). Die Enterprise Server-Lizenz startet bei 1999 $ mit 3 Agenten und unbegrenzten Build-Konfigurationen.

Vergleichstabelle

Jenkins TeamCity
Entwicklungssprache Java Java
Entwickler CloudBees, Kohsuke Kawaguchi, Open Source JetBrains
Lizenz MIT-Lizenz Proprietäre Software
Merkmale
  • Open Source
  • Umfangreiches Plugin-Ökosystem
  • Einfache Einrichtung
  • Unterstützung für Build-Pipelines
  • Workflow-Plugin
  • Zahlreiche Integrationen
  • Intern gehostet
  • Asynchrone Builds
  • HTML-Publisher
  • Schnelle Builds
  • Schlüsselintegrationen
  • Cloud-Integration
  • Build-Historie
  • Build-Infrastruktur
  • Code-Qualitätsverfolgung
  • VCS-Interoperabilität
  • Systemwartung
  • Benutzerverwaltung
  • Erweiterbarkeit und Anpassung
  • Vorab getestete Commits
Benutzerfreundlichkeit Ja Ja
Benutzeroberfläche Einfache Oberfläche Ansprechende Oberfläche
Community Größere Community aufgrund Open Source Kleinere Community im Vergleich zu Jenkins
Preisgestaltung Kostenlos Professional Server: 299 $ pro Agent nach 3 kostenlosen Agenten. Enterprise Server ab 1999 $
Integrationen Über 1400 Integrationen Über 300 Integrationen
Sicherheit Weniger sicher Sicherer
API JSON, Python, RESTful-API: XML RESTful-API, Open API für Plugins
Programmiersprachen Java, PHP, C, C++, Fortran, Python und viele mehr Python, C++, Java, .NET, Ruby, PHP, Node.js und mehr
Container-Unterstützung Docker-Plugin Integriert, Docker Support out of the box
Release-Zyklus Häufiger Weniger häufig
Berichterstattung Detaillierte Berichte Berichte mit besserer Web-Oberfläche

Fazit

Dieser Vergleich hat die Unterschiede zwischen Jenkins und TeamCity, zwei der meistgenutzten Continuous Integration-Tools, aufgezeigt.

Bei der Auswahl eines CI-Tools sollten Faktoren wie Hosting-Optionen, verfügbare Integrationen, wiederverwendbare Codebibliotheken, Container-Unterstützung sowie die Benutzerfreundlichkeit und Lernkurve berücksichtigt werden. Ein Tool, das diese Kriterien erfüllt, ist eine ausgezeichnete Wahl.

Im Zweifelsfall empfiehlt es sich, die kostenlosen Versionen von Jenkins und TeamCity zu testen. Nach einigen Builds auf beiden Plattformen wird es einfacher sein zu beurteilen, welches Tool für die eigenen Projekte besser geeignet ist.