Aufgabe 1: Erstelle eine
.gitlab-ci.yml
-Datei mit einem Job, der “Hello World” auf
der Konsole ausgibt.
Ziel: Ein einfacher Einstieg, um das Grundgerüst eines
GitLab CI Jobs zu verstehen und die Pipeline zu testen.
Aufgabe 2: Erweitere die .gitlab-ci.yml
um eine Stage build
. Füge einen Job hinzu, der in dieser
Stage läuft und die Meldung “Build erfolgreich” ausgibt.
Ziel: Einführung in Stages, um zu zeigen, wie Jobs in
verschiedenen Phasen definiert werden können.
Aufgabe 3: Definiere einen Job, der nur im
main
-Branch läuft. Im main
-Branch soll die
Ausgabe “Job läuft im Hauptbranch” erscheinen; für alle anderen Branches
soll die Nachricht “Job läuft in einem Nebenbranch” erscheinen.
Ziel: Nutzung branchspezifischer Bedingungen zur
Steuerung der Job-Ausführung.
Aufgabe 4: Füge einen Job hinzu, der die
Umgebungsvariable MY_VAR
liest und auf der Konsole ausgibt.
Setze MY_VAR
als Pipeline-Variable in GitLab.
Ziel: Einführung in den Einsatz von Umgebungsvariablen
innerhalb der Pipeline.
Aufgabe 5: Erstelle einen Job, der eine Textdatei
mit einer Nachricht erstellt und diese als Artefakt speichert, sodass
sie nach Abschluss der Pipeline heruntergeladen werden kann.
Ziel: Veranschaulichung, wie Artefakte erstellt und in
GitLab gespeichert werden.
Aufgabe 6: Erstelle zwei Jobs, bei denen der zweite
Job nur ausgeführt wird, wenn der erste erfolgreich abgeschlossen wurde.
Der erste Job soll “Erster Job ausgeführt” ausgeben und eine Datei
status.txt
erstellen. Der zweite Job soll die Datei lesen
und die darin enthaltene Nachricht auf der Konsole ausgeben.
Ziel: Einführung in Abhängigkeiten zwischen Jobs und
das Konzept von Artefakten zwischen verschiedenen Jobs.
Aufgabe 7: Füge einen Job hinzu, der nur in der
production
-Umgebung ausgeführt wird und eine Nachricht
“Dieser Job läuft nur in der Produktionsumgebung” ausgibt.
Ziel: Verständnis der bedingten Ausführung basierend
auf Umgebungen und der Umgebungskonfiguration in GitLab CI.
Aufgabe 8: Erstelle zwei Jobs, die parallel laufen
und jeweils eine Nachricht ausgeben (z.B., “Job 1 läuft” und “Job 2
läuft”).
Ziel: Erklären, wie Jobs parallel ausgeführt werden
können, um die Pipeline-Zeit zu optimieren.
Aufgabe 9: Definiere einen Job, der bei einem Fehler
automatisch bis zu dreimal wiederholt wird. Simuliere im Job einen
Fehler durch exit 1
.
Ziel: Einführung in das retry
-Keyword und
das Verständnis, wie Wiederholungen bei fehlgeschlagenen Jobs
konfiguriert werden.
Aufgabe 10: Erstelle einen Job, der manuell
gestartet werden muss und eine Nachricht ausgibt, wenn er aktiviert
wird. Ein zweiter Job soll automatisch im Anschluss ausgeführt werden,
sobald der manuelle Job erfolgreich abgeschlossen ist.
Ziel: Unterschied zwischen automatisierten und
manuellen Jobs kennenlernen und Steuerung der Pipeline-Abläufe.
only
Aufgabe 11: Erstelle einen Job, der nur ausgeführt
wird, wenn er auf einem feature
-Branch läuft. Der Job soll
die Nachricht “Dieser Job läuft nur auf Feature-Branches”
ausgeben.
Ziel: Nutzung des only
-Keywords, um Jobs
branch-spezifisch zu definieren.
except
Aufgabe 12: Erstelle einen Job, der auf allen
Branches außer dem main
-Branch ausgeführt wird. Der Job
soll “Dieser Job wird nicht auf dem main-Branch ausgeführt”
ausgeben.
Ziel: Demonstration des except
-Keywords
zur branch-spezifischen Steuerung der Pipeline.
tags
zur Auswahl spezifischer RunnerAufgabe 13: Erstelle einen Job, der nur auf Runnern
mit dem Tag docker
ausgeführt wird. Der Job soll “Dieser
Job wird nur auf Docker-Runnern ausgeführt” ausgeben.
Ziel: Einsatz des tags
-Keywords, um Jobs
gezielt auf spezifischen Runnern auszuführen.
rules
Aufgabe 14: Erstelle einen Job, der abhängig vom
Commit-Message-Inhalt ausgeführt wird. Wenn die Commit-Message das Wort
“deploy” enthält, soll der Job “Deploy-Job ausgeführt” ausgeben.
Andernfalls soll der Job nicht ausgeführt werden.
Ziel: Nutzung des rules
-Keywords zur
feineren Steuerung der Job-Ausführung basierend auf Bedingungen.
only
, rules
, und tags
Aufgabe 15: Erstelle einen Job, der nur auf dem
main
-Branch und nur bei Merges in diesen Branch ausgeführt
wird, allerdings nur auf Runnern mit dem Tag production
.
Der Job soll die Nachricht “Deployment in Produktionsumgebung”
ausgeben.
Ziel: Kombination von branch-spezifischen Regeln und
Runners, um den Job präzise zu steuern.