de DevOps Software Gitlab Pipelines

Pipeline unter Gitlab einrichten

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.

Eine Pipeline anlegen

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.

Aufbau der Pipeline

Der Aufbau der Pipeline innerhalb dieser .yml Datei ist wie folgt:

default

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.

stages

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.

variables

Hier können Variablen definiert werden, die wir später in unserer Pipeline verwenden können.

Eine Beispiel Pipeline

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.

Die Pipeline wurde erstellt

Wenn wir auf dem Link klicken finden wir eine Übersicht über alle Stages und wie diese Zusammenhängen in einem kleinen Graphen.

Die Pipeline wurde erstellt

Mit einem Klick auf unseren Job finden wir die eigentlichen Logs des Jobs

Die Pipeline wurde erstellt

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.