Vorbereitungen
Hierfür sollte das gitlab-Plugin in Jenkins installiert sein.
Gitlab-Zugriff in Jenkins einrichten
Der Zugriff wird per access tokens gesteuert, welche man jederzeit anlegen oder entfernen kann.
Um Jenkins den Zugriff auf Gitlab zu ermöglichen, gehen wir im Gitlab oben rechts auf unseren Avatar und öffnen die persönlichen Einstellungen.
Auf der linken Seite findet sich dann der Menüpunkt Access Tokens
, wo man nun nur noch einen Namen, eventl. ein Ablaufdatum und die entsprechenden Rechte setzt und anschließend auf Create personal access token klickt.
Wichtig: der erstellte Token sollte unbedingt irgendwo zwischengespeichert werden, da man diesen nicht noch einmal angezeigt bekommt.
Nun fügt man in Jenkins diesen token als secret text unter Zugangsdaten
bzw. Credentials
mit einem entsprechenden Namen hinzu.
Als nächsten Schritt fügt man in den allgemeinen Jenkins-Einstellungen eine neue Gitlab-Verbindung hinzu, bei der neben der URL der Gitlab-Instanz auch der eben gespeicherte Token angeben wird.
Hierbei lässt sich per Klick auf den Knopf Test Connection überprüfen ob eine Verbindung hergestellt werden kann. Im Erfolgsfall sollte Success
erscheinen.
Jenkins API-Token erzeugen
Um per Webhook angesprochen zu werden, muss in der Konfiguration des entsprechenden Jenkins-Jobs der Punkt Build when a change is pushed to GitLab. GitLab webhook URL: http://… aktiviert werden.
- globalen Token erzeugen
Um einen Token in Jenkins zu erzeigen, welchen man für den Webhhok benötigt, loggt man sich in Jenkins ein und klickt oben rechts auf den entsprechenden Benutzernamen und dort dann aufEinstellungen
bzw.Settings
.
Dort lässt sich im Bereich API Token durch einen Klick auf Add new Token und dann auf Generate ein neuer Token generieren.
- projektspezifischen Token erzeugen
Hierzu geht man in die Konfiguration des entsprechenden Jobs und klickt unter dem Punkt Build Triggers den Punkt Build when a change is pushed to GitLab. GitLab webhook URL: http://…. auf den Knopf Erweitert… und dort findet sich am Ende ein Bereich für den Secret Token, welcher durch Klick auf Generate erzeugt wird.
Wichtig: Auch der hier erzeugte wird nur dieses eine Mal bei der generierung angezeigt und sollte daher sicherheitshalber separat zwischengespeichert werden.
Weitere Infos: gitlab-plugin
Einrichten des Webhooks in Gitlab
Einen Webhook kann man in Gitlab im entsprechenden Repo unter Einstellungen —> Integrationen einrichten.
Hierzu trägt man in das URL die entsprechende URL des Jenkin-Jobs ein, welche folgendes Format hat:
http://USERID:APITOKEN@JENKINS_URL/project/YOUR_JOB
- USERID entspricht dem Benutzernamen im Jenkins. Falls man sich unsicher ist klingt man im Jenkins oben rechts auf den Benutzernamen und bekommt dann die User ID angezeigt. Bsp.:
Jenkins User ID: rasputin
- APITOKEN ist der Token welcher im Jenkins (global oder projektspezifisch) erzeugt wurde
- JENKINS_URL die URL über die der Jenkins erreichbar ist, ggf. mit Angabe des Portes. Bsp.:
1.2.3.4:8080
- YOUR_JOB ist der Name des Jenkins-Jobs der automatisch angestoßen werden soll
Das Feld Secret Token bleibt leer.
Nachdem gespeichert wurde erscheint etwas weiter unten auf der Seite der neue Webhook in der Auflistung der Webhooks und kann durch einen Druck auf Test und Angabe des gewünschten Events auf Funktionstüchtigkeit geprüft werden.
Bei einem erfolgreichen Test sollte die Ausgabe Hook executed successfully: HTTP 200
erscheinen.
Nun sollte nach jedem erfolgreichen push auf das Repo der entsprechende Jenkins-Job automatisch gebaut werden.