GitLab Pipelines · Workshop Lektion 13 / Besonderheiten

Besonderheiten & Profi-Kniffe

Die kleinen Keywords, die im echten Betrieb den Unterschied machen.

Warum das zählt
Die grossen Bausteine kennst du. Diese letzte Lektion sammelt die Details, nach denen im Workshop garantiert gefragt wird: Secrets, flaky Tests, hängende Pipelines, Kosten. Wer sie kennt, baut Pipelines, die im Alltag nicht nerven.

Kurzer Rückruf

Warum eine Component-Version pinnen?

1 · Secrets richtig handhaben

Geheimnisse gehören nie ins YAML, sondern in CI/CD-Variablen (Projekt → Settings → CI/CD):

Maskierung ist kein Tresor Masking verhindert nur das Anzeigen im Log. Ein bösartiges Skript könnte den Wert trotzdem ausgeben. Maskierte Variablen schützen vor versehentlichem Leak, nicht vor Missbrauch.

2 · Flaky Tests & instabile Infrastruktur: retry

integration-test:
  script: [pytest tests/integration]
  retry:
    max: 2                         # bis zu 2 Wiederholungen
    when:
      - runner_system_failure        # nur bei Infra-Problemen wiederholen
      - stuck_or_timeout_failure
Gezielt wiederholen retry: max: 2 allein wiederholt bei jedem Fehler – das maskiert echte Bugs. Besser mit when: nur Infrastruktur-Fehler wiederholen, nicht fachliche.

3 · Schnellere Feedback-Schleifen: interruptible

default:
  interruptible: true

workflow:
  auto_cancel:
    on_new_commit: interruptible

Pusht jemand schnell hintereinander, bricht GitLab die jetzt überholten, noch laufenden Pipelines ab. Das spart Runner-Zeit und gibt schneller Feedback auf den neuesten Stand. Deploy-Jobs lässt man besser nicht interruptible.

4 · Hängende Jobs vermeiden: timeout

e2e-test:
  timeout: 20 minutes   # statt stundenlang am Projekt-Timeout zu hängen
  script: [./run-e2e.sh]

5 · Kosten & Speicher im Griff

6 · Debug-Werkzeuge

Dein Win – und Kursabschluss Vom ersten script bis zu Secrets, Retries und Kostenkontrolle: Du hast den vollen Werkzeugkasten, um produktionsreife GitLab-Pipelines zu bauen und zu vermitteln.

Übung für Teilnehmende

Übung 1 · Sicherheit

Frage: Ein Prod-Deploy-Token darf nur auf main verfügbar sein. Welche zwei Eigenschaften gibst du der CI/CD-Variable?

Lösung anzeigen

Masked (nicht im Log sichtbar) und Protected (nur auf protected Branches/Tags, z. B. main). Feature-Branches sehen das Token dann gar nicht.

Übung 2 · Retry richtig

Frage: Warum ist retry: max: 2 ohne when: oft eine schlechte Idee?

Lösung anzeigen

Es wiederholt bei jedem Fehler – auch bei echten Bugs. Ein kaputter Test wird so gelegentlich „zufällig" grün und versteckt das Problem. Lieber nur Infra-Fehler wiederholen.

Übung 3 · Aufräumen

Aufgabe: Nenne drei konkrete Stellschrauben, um Pipeline-Kosten zu senken.

Lösung anzeigen

Z. B.: (1) expire_in für Artifacts, (2) Matrix klein halten, (3) teure Jobs per rules nur auf main/Tags, (4) interruptible + auto-cancel, (5) Cache-Keys verbessern. Drei davon genügen.

Kurz prüfen (aus dem Kopf)

Was leistet eine maskierte CI/CD-Variable?

Wofür ist interruptible gedacht?

Primärquelle zum Lesen Masked variables, retry, auto-cancel.
Frag deinen Teacher. Bereit, alles an der echten Tasks-API zusammenzusetzen? Ich kann dir ein komplettes Beispiel-Repo skizzieren.
← Lektion 12 Glossar & Referenz →