GitLab Continuous Integration
Der erste Build
Zeit, mit etwas Einfachem zu beginnen. Als Beispiel dient eine einfache kleine C-Anwendung namens test.c:
#include <stdio.h> int main() { printf("GitLab CI rocks!\n"); return 0; }
Die CI-Konfigurationsdatei .gitlab-ci.yml sieht wie folgt aus:
build: script: - "rm *.out || true" - "gcc *.c"
In diesem Beispiel wird ein Job build definiert, der zwei Kommandos ausführt. Das erste Kommando löscht eventuell vorher übersetzte C-Programme, während der zweite Aufruf den Quellcode übersetzt.
Nach einem erfolgten Commit wird automatisch die CI ausgelöst. Ersichtlich ist das durch einen Eintrag links im Builds-Menü - hier ist im Idealfall eine 1 zu sehen (für einen aktuell laufenden Build-Prozess). Ein Klick auf das Menü öffnet die Übersicht aktueller und vergangener Builds. Mit einem Klick auf einzelne Builds lassen sich Konsolenausgaben und Git-Informationen (Commit-Nummer, Branch, Autor) anzeigen. Per Mausklick auf das entsprechende Symbol lassen sich Builds wiederholen.
GitLab bietet auch die Möglichkeit, Build zeitgesteuert auszuführen - z.B. spätestens alle 5 Stunden. In diesem Fall würde nach einer gewissen Zeit ein Build ausgelöst werden, sofern kein Commit erfolgt. Dieses Verhalten kann in den Projekt-Einstellungen unterhalb CI Settings konfiguriert werden (Build Schedule). In diesem Dialog findet sich auch ein Status-Bild (Status badge), welches beispielsweise in die README.md Datei des Repositories eingebunden werden kann - so ist der aktuelle Build-Status immer ersichtlich.
Ausblick
Ich bin mit der Lösung sehr zufrieden; mit Jenkins hatte ich leider häufig Probleme - nicht zuletzt wegen Java. Häufige Updates und Re-Konfigurationen waren die Folge. GitLab CI integriert sich wunderbar in die Oberfläche, die ich ohnehin schon zum Entwickeln verwende. Für mich bedeutet das weniger Administrations- und Verwaltungsaufwand. Je nach Projektumfang dürfte die integrierte CI-Lösung nicht allen Anforderungen gewachsen sein - für kleinere Setups ist sie allerdings ideal. Ich bin gespannt, inwiefern GitLab die Funktionen erweitert.
Auf der GitLab-Webseite gibt es weitere Informationen.
Der Artikel ist ursprünglich auf der Webseite des Autors erschienen.