Zum Inhalt

Jenkins

Jenkins ist unser Build/CI/CD-Server.

Bei Fragen zu Jenkins wendet euch an:

Authentifizierung

Jenkins wurde ohne eine eigene Benutzerdatenbank konfiguriert. Stattdessen erfolgt die Anmeldung über OAuth 2.0 von Bitbucket. Damit müssen die Benutzer, die auf den Code und dessen Builds Zugriff haben nur an einer Stelle verwaltet werden.

Nach dem ersten Anmelden muss Jenkins einmalig der Zugriff auf die Informationen des Bitbucket-Kontos des Nutzers erlaubt werden. Dies ist nötig, damit der Benutzer als Mitglied der Bitbucket-Organisation der BIG 5 Concepts GmbH identifiziert werden kann und entsprechenden Zugriff in Jenkins erhält.

Blue Ocean

Es ist die alternative moderne Benutzeroberfläche Blue Ocean installiert. Es lässt sich jederzeit von Blue Ocean in die klassische Oberfläche (Pfeil-im-Quadrat-Symbol rechts Oben) und wieder zurück (“Open Blue Ocean” Link in der linken Menüleiste) wechseln.

Pipelines

Die Jenkins-Installation hat eine Konfiguration, die ganz auf Pipelines ausgerichtet ist.

Integration mit Bitbucket

Jenkins bezieht seine Anweisungen ausschließlich aus Dateien namens Jenkinsfile aus den Repositorien. Man kann keine Jobs manuell anlegen oder konfigurieren. Stattdessen scannt Jenkins regelmäßig die Bitbucket-Organisation auf neue Repositorien. In diesen werden Webhooks angelegt, die Jenkins über neue Änderungen benachrichtigen. Alle Branches und Pull Requests, die ein Jenkinsfile enthalten und deren Projektkürzel nicht auf _ endet werden dann von Jenkins als Jobs angelegt und mit den darin enthaltenen Anweisungen gebaut. Um Jenkins für ein Repositorium einzurichten reicht es also ein Jenkinsfile hinzuzufügen. Der Rest geschieht automatisch. Löschungen werden auch automatisch von Bitbucket nach Jenkins propagiert.

Jenkinsfile

Das Jenkinsfile ist ein Groovy-Skript, was von Jenkins ausgeführt wird. Beim Erstellen eines Jenkinsfiles orientiert man sich an entweder an Beispielen auf GitHub, oder besser and den bestehenden Vorlagen fuer Laravel oder Symfony. Letztere führen wiederum PTR aus. Diese Trennung ermöglicht es im Notfall leicht alle Aufgaben auch manuell und ohne Jenkins auszuführen.