Einführung
In der modernen Softwareentwicklung sind Continuous Integration (CI) und Continuous Delivery/Deployment (CD) zentrale Säulen der DevOps-Kultur.
GitLab integriert CI/CD direkt und bietet Entwicklern eine leistungsstarke, flexible und skalierbare Lösung.
In diesem Artikel lernen Sie:
- Die Grundlagen von GitLab CI/CD,
- Aufbau der
.gitlab-ci.yml, - Installation eines GitLab Runners,
- Realistische Pipeline-Beispiele,
- Docker- und Kubernetes-Integration,
- Best Practices für produktionsreife Pipelines.
Voraussetzungen
Vor dem Start benötigen Sie:
- Ein GitLab-Konto (self-hosted oder gitlab.com),
- Grundkenntnisse in Git,
- Ein System mit Docker,
- Ein einfaches Projekt (z. B. Python Flask, Node.js Express).
Schritt 1 – GitLab CI/CD Grundlagen
1.1 Was ist CI/CD?
- CI (Continuous Integration): Entwickler integrieren regelmäßig Code in den Main-Branch, Tests laufen automatisch.
- CD (Continuous Delivery/Deployment): Automatisierte Bereitstellung in Staging oder Produktion.
1.2 Wie GitLab CI/CD funktioniert
- Pipelines bestehen aus Stages und Jobs.
- Alles wird in
.gitlab-ci.ymldefiniert. - Beispiel-Pipeline: build → test → deploy.
stages:
- build
- test
- deploy
1.3 GitLab Runner
- Ein Runner führt Jobs aus.
- Kann lokal, auf Servern oder in Kubernetes installiert werden.
Schritt 2 – Erste Pipeline
2.1 Minimal .gitlab-ci.yml
stages:
- build
- test
- deploy
build-job:
stage: build
script:
- echo "Building the app..."
test-job:
stage: test
script:
- echo "Running tests..."
deploy-job:
stage: deploy
script:
- echo "Deploying..."
2.2 Jobs und Stages
- Stages: Pipeline-Phasen (build, test, deploy).
- Jobs: Aufgaben pro Stage.
- Script: Befehle, die den Job definieren.
2.3 Artifacts und Cache
build-job:
stage: build
script:
- mkdir dist
- echo "Build output" > dist/output.txt
artifacts:
paths:
- dist/
Schritt 3 – GitLab Runner Installation
3.1 Installation auf Linux
sudo apt-get install -y curl
curl -L --output gitlab-runner.deb https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
sudo dpkg -i gitlab-runner.deb
3.2 Runner registrieren
sudo gitlab-runner register
Erforderliche Angaben:
- GitLab URL:
https://gitlab.com/ - Token: Im Projekt-Setup zu finden
- Executor: empfohlen
docker
3.3 Docker Executor
[[runners]]
name = "docker-runner"
executor = "docker"
[runners.docker]
image = "python:3.10"
privileged = true
Schritt 4 – Docker in Pipelines
4.1 Docker-in-Docker
image: docker:latest
services:
- docker:dind
stages:
- build
build-job:
stage: build
script:
- docker build -t myapp .
4.2 Node.js Beispiel
image: node:18
stages:
- install
- test
install-job:
stage: install
script:
- npm install
test-job:
stage: test
script:
- npm test
4.3 Python Flask Beispiel
image: python:3.10
stages:
- test
test-job:
stage: test
script:
- pip install -r requirements.txt
- pytest
Schritt 5 – Umgebungen und Deployment-Strategien
5.1 Staging-Umgebung
deploy-staging:
stage: deploy
script:
- echo "Deploying to staging..."
environment:
name: staging
url: https://staging.example.com
5.2 Manuelle Bestätigung
deploy-production:
stage: deploy
script:
- echo "Deploying to production..."
when: manual
environment:
name: production
url: https://example.com
5.3 Blue-Green und Canary
- Blue-Green: Zwei Umgebungen, eine live, eine inaktiv.
- Canary: Neue Version für kleine Nutzergruppe.
Schritt 6 – Best Practices
- Caching: Abhängigkeiten cachen.
- Artifacts: Build-Ergebnisse weitergeben.
- Secrets Management: GitLab CI/CD Variablen verwenden.
- Parallel Jobs: Tests parallel laufen lassen.
- Monitoring: Metriken mit Prometheus/Grafana überwachen.
Schritt 7 – Kubernetes-Integration
7.1 Deployment nach Kubernetes
deploy-k8s:
stage: deploy
image: bitnami/kubectl
script:
- kubectl apply -f k8s/deployment.yaml
environment:
name: production
url: https://k8s.example.com
7.2 Helm Deployment
deploy-helm:
stage: deploy
script:
- helm upgrade --install myapp ./chart
Fazit
In diesem Artikel haben Sie die Grundlagen von GitLab CI/CD gelernt:
- Aufbau der
.gitlab-ci.yml, - Runner-Installation,
- Docker- und Kubernetes-Integration,
- Umgebungsmanagement und Deployment-Strategien,
- Best Practices.