33 Übungsaufgaben

33.1 1. Einführung in die Job-Definitionen

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.


33.2 2. Stages konfigurieren

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.


33.3 3. Bedingte Ausführung mit Branches

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.


33.4 4. Einsatz von Variablen

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.


33.5 5. Artefakte definieren und speichern

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.


33.6 6. Abhängigkeiten zwischen Jobs

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.


33.7 7. Bedingte Ausführung basierend auf Umgebungen

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.


33.8 8. Parallelisierte Jobs

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.


33.9 9. Retries bei fehlgeschlagenen Jobs

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.


33.10 10. Manuelle und automatisierte Jobs

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.


33.11 11. Branch-spezifische Jobs mit 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.


33.12 12. Ausschluss spezifischer Branches mit 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.


33.13 13. Verwendung von tags zur Auswahl spezifischer Runner

Aufgabe 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.


33.14 14. Regeln für Job-Ausführung mit 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.


33.15 15. Kombination von 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.