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.