Continuous Integration / Delivery mit GitLab
Grundlagen zu GitLab Pipelines
- Anatomie einer Pipeline
- Unterschied zwischen Stages und Jobs
- Die
.gitlab-ci.yml
-Datei - Runner als Arbeitstiere
- Docker-, Kubernetes-, Shell-Runner und weitere Runner
- Wann welcher Runner-Typ geeignet ist
- Auswahl eines Runners für einen Job über Tags
- Wie das „Don’t repeat yourself“-Prinzip (DRY) in Pipelines umgesetzt wird
- Allgegenwärtige Variablen in (fast) jeder Pipeline
Artefakte – Outputs der Jobs
- Handhabung der mit der Pipeline erzeugten Artefakte
- Artefakte mittels Dateifilter deklarieren
- Ablaufdatum für Artefakte verwenden
- Cache vs. Artifacts
Erzeugung von Docker Images
- Problematik bei der Erzeugung von Docker Images in der Pipeline (docker-in-docker)
- Vorstellung möglicher Lösungsansätze
- Erzeugung eines Docker Images mit podman
- Erzeugung eines Docker Images mit kaniko
GitLab Registries
- Container Registry
- Package Registry
GitLab Services
- Wie Services als Teil eines Jobs verwendet werden können
- Welche Runner Services unterstützen
- Wie Services im Job via Netzwerk erreichbar sind
- Verschiedene Einsatzszenarien für Services
Wiederverwendung von Teilen der Pipeline
- DRY: Nutzung von YAML Sprachmitteln wie Anchors und Aliases
- DRY: Mit include/extend wiederverwendbare Pipeline-Teile in separate Dateien auslagern
- Die verschiedenen Möglichkeiten, separaten Dateien an verschiedenen Orten abzulegen und zu referenzieren
Environments und Releases
- Welcher Job was wohin deployed
- Statische vs. dynamische Environments
- Attribute eines Environments
- Releases als Teil der Pipeline erzeugen
- Umfang eines Releases und optionale Komponenten
- Erzeugung eines Git Tags als Teil eines Release-Jobs
- Nutzung der
relase-cli
Trigger und Verwendung dieser in Pipelines
- Definition eines Triggers
- Parent/Child Pipelines aufbauen
- Multi-Project Pipelines aufbauen
- Definition von Regeln, wann ein Trigger ausgeführt wird
- Pausieren einer Pipeline durch manuelle Trigger
Regeln für die Pipeline
rules
als Mittel, um Dynamik in die Pipelines zu bringen- Wann und wie
rules
ausgewertet werden - Wie
rules
entscheiden, ob ein Job ein Teil der Pipeline wird - Unterschiedliche Typen von
rules
Weiteres
- Workflow - Übergeordnete Kontrolle einer Pipeline
- Effiziente Pipelines – Directed Acyclic Graph (DAG) mit
needs
-Schlüsselwort - Deployment Safety / Deploy Freezes
- Projektorganisation und Entwicklungsplanung