Erstens kann die GitLab Community Edition ab heute vollständig mit Jenkins kompatibel sein. Keine Frage.
Im Folgenden gebe ich ein Feedback zu einer erfolgreichen Erfahrung, bei der Jenkins und GitLab CI kombiniert wurden. Ich werde auch diskutieren, ob und aus welchem Grund Sie beide oder nur einen von ihnen verwenden sollten.
Ich hoffe, dies gibt Ihnen qualitativ hochwertige Informationen zu Ihren eigenen Projekten.
Stärken von GitLab CI und Jenkins
GitLab CI
GitLab CI ist natürlich in GitLab SCM integriert. Sie können Pipelines mithilfe von gitlab-ci.yml
Dateien erstellen und über eine grafische Oberfläche bearbeiten.
Diese Pipelines als Code können offensichtlich in der Codebasis gespeichert werden, wodurch die Praxis "Alles als Code" (Zugriff, Versionierung, Reproduzierbarkeit, Wiederverwendbarkeit usw.) durchgesetzt wird.
GitLab CI ist ein großartiges visuelles Management-Tool:
- Alle Mitglieder des Teams (einschließlich der nicht technischen) haben schnellen und einfachen Zugriff auf den Status des Anwendungslebenszyklus.
- Daher kann es als interaktives und operatives Dashboard für das Release-Management verwendet werden.
Jenkins
Jenkins ist ein großartiges Build-Tool. Die Stärke liegt in den vielen Plugins. Insbesondere hatte ich großes Glück bei der Verwendung von Schnittstellen-Plugins zwischen Jenkins und anderen CI- oder CD-Tools. Dies ist immer eine bessere Option, als eine Dialogschnittstelle zwischen zwei Komponenten (möglicherweise schlecht) neu zu entwickeln.
Pipeline als Code ist auch mithilfe von groovy
Skripten verfügbar .
GitLab CI und Jenkins zusammen verwenden
Es mag zunächst etwas überflüssig klingen, aber die Kombination von GitLab CI und Jenkins ist ziemlich leistungsfähig.
- GitLab CI orchestriert (Ketten, Läufe, Monitore ...) Pipelines und kann von seiner in GitLab integrierten grafischen Oberfläche profitieren
- Jenkins führt den Job aus und erleichtert den Dialog mit Tools von Drittanbietern.
Ein weiterer Vorteil dieser Konstruktion besteht in einer losen Kopplung zwischen den Werkzeugen:
- Wir könnten alle Komponenten der Build Factory ersetzen, ohne den gesamten CI / CD-Prozess überarbeiten zu müssen
- Wir könnten eine heterogene Build-Umgebung haben, die (möglicherweise mehrere) Jenkins, TeamCity, wie Sie es nennen, kombiniert und dennoch ein einziges Überwachungstool hat.
Der Kompromiss
Natürlich muss für dieses Design ein Preis bezahlt werden: Die anfängliche Einrichtung ist umständlich und Sie müssen nur ein minimales Verständnis für viele Werkzeuge haben.
Aus diesem Grund empfehle ich eine solche Einrichtung nur, wenn Sie dies tun
- Sie müssen mit vielen Tools von Drittanbietern umgehen. Dann ist Jenkins mit seinen vielen Plugins sehr praktisch.
- Sie müssen sich mit komplexen Anwendungen mit heterogenen Technologien befassen, die jeweils eine andere Build-Umgebung haben, und dennoch über eine einheitliche Benutzeroberfläche für die Verwaltung des Anwendungslebenszyklus verfügen.
Wenn Sie sich in keiner dieser Situationen befinden, sind Sie wahrscheinlich mit nur einer der beiden besser dran, aber nicht mit beiden.
Wenn ich einen auswählen müsste
Sowohl GitLab CI als auch Jenkins haben Vor- und Nachteile. Beide sind mächtige Werkzeuge. Also welches soll man wählen?
Antwort 1
Wählen Sie die aus, in der Ihr Team (oder eine nahe stehende Person) bereits über ein bestimmtes Fachwissen verfügt.
Antwort 2
Wenn Sie alle ein absoluter Neuling in CI-Technologien sind, wählen Sie einfach eine aus und legen Sie los.
- Wenn Sie GitLab verwenden und ein Händchen für alles als Code haben, ist es absolut sinnvoll, GitLab CI zu wählen.
- Wenn Sie mit vielen anderen CI / CD-Tools in Dialog treten müssen oder diese GUI unbedingt benötigen, um Ihre Jobs zu erstellen, entscheiden Sie sich für Jenkins.
Diejenigen unter Ihnen, die GitLab verwenden und nicht sicher sind, ob sie dies weiterhin tun werden, müssen dennoch bedenken, dass die Auswahl von GitLab CI bedeuten würde, alle Ihre CI / CD-Pipelines in den Papierkorb zu werfen.
Das letzte Wort ist: Das Gleichgewicht neigt sich aufgrund seiner vielen Plugins ein wenig zu Jenkins, aber es besteht die Möglichkeit, dass GitLab CI die Lücke schnell schließt.