Gitlab bietet in ihrer Cloud Lösung und On-Premise die Möglichkeit an Pipelines laufen zu lassen. Hierbei muss nur beachtet werden, dass es dafür sogenannte Worker gibt. Die Worker stehen auf der Cloud Lösung (gitlab.com) von Gitlab selbst zur Verfügung und auf der On-Premise Lösung müssen wir selber schauen, dass wir die Worker installieren. Dazu aber in einem anderen Artikel mehr, denn wir gehen hier in unserem Fall davon aus, dass es bereits genügen Worker gibt, die auch unseren Anforderungen erfüllen.
Um eine Pipeline anzulegen bzw. Gitlab zu sagen, dass für dieses Repository eine Pipeline erstellt werden soll legen wir einfach innerhalb unseres Repos eine Datei mit dem Namen .gitlab-ci.yml
an.
Der Aufbau der Pipeline innerhalb dieser .yml
Datei ist wie folgt:
Der default Bereich legt z.B. das Image des Workers fest, wenn es sich um einen Docker-Worker handelt. Hier können außerdem auch services definiert werden, ein Script oder Commands angegeben werden die vor oder nach jedem Pipeline-Befehl gestellt werden. Wichtig ist auch die Möglichkeit Tags zu vergeben auf denen die Pipeline laufen darf. Bei der Vergabe von Tags muss der Worker also ebenfalls die gleichen Tags besitzen, da sonst die Pipeline nicht auf diesem Worker laufen darf.
Hier werden ide verschiedenen Stages definiert, die in der Pipeline zur Verfügung stehen. Die Stages laufen hintereinander in der Reihenfolge in der Sie definiert wurden und beinhalten einen oder mehrere Jobs. Die Jobs innerhalb einer Stage laufen Parallel, insofern es die Anzahl der Worker zulässt.
Hier können Variablen definiert werden, die wir später in unserer Pipeline verwenden können.
In unserer Beispiel Pipeline wollen wir einmal eine Variable anlegen und anschließend unser Repository auflisten. Dafür erstellen wir uns einmal ein leeres Repository, fügen eine leere .gitlab-ci.yml
Datei ein und öffnen diese in einem Editor unserer Wahl. In dieser Datei fügen wir erstmal unsere drei Kategorien hinzu:
1default:
2 image: ubuntu
3
4stages:
5 - test
6
7variables:
8 FILE: test.sh
Hier haben wir nun ein default image mit dem Namen Ubuntu in allen unserer Jobs und eine stages mit dem Namen test. Die Variable FILE mit dem Wert test.sh können wir nun ebenfalls in unserer Pipeline verwenden. Diese Stage können wir nun in unserem Job ansprechen und ihr den Job zuweisen. Um einen neuen Job zu erstellen denken wir uns einen guten sprechenden Namen aus und weisen ihr der stage zu:
1my_pipeline:
2 stage: test
in der gleichen Datei wird unten folgendes eingefügt
Mittels des script Parameters können wir nun auch der Pipeline bestimmte Befehle zuteilen.
1my_pipeline:
2 stage: test
3 script:
4 - echo "HELLO"
5 - echo $FILE
pipeline soll HELLO und den Wert der Variable $FILE ausgeben.
Wir fügen die Datei .gitlab-ci.yml unseres Git Repos hinzu, commiten das ganze und pushen das in unser Repository.
1git add . ; git commit -m "pipeline"; git push origin master
Wir können nun auf unserer Gitlab Instance gehen und innerhalb unseres Repos im Menü auf den Punkt Build -> Pipelines
klicken. Hier sollte nun unsere Pipeline auftauchen.
Wenn wir auf dem Link klicken finden wir eine Übersicht über alle Stages und wie diese Zusammenhängen in einem kleinen Graphen.
Mit einem Klick auf unseren Job finden wir die eigentlichen Logs des Jobs
In den Logs sehen wir nun einmal den Befehl der abgeschickt wurde in Zeile 19 und Zeile 21 und in den Zeilen jeweils darunter sehen wir den Output des jeweiligen Befehls.