CI/CD ist eine grundlegende Praxis der modernen Softwareentwicklung. Automatisieren Sie alles.
CI – Continuous Integration¶
Jeder Push -> Build -> Test -> Feedback. Ziel: Fehler so frueh wie moeglich finden.
- Automatischer Build bei jedem Push
- Unit- + Integrationstests
- Linting und statische Analyse
- Security-Scanning
CD – Continuous Delivery vs Deployment¶
Delivery: Der Code ist jederzeit bereit fuer das Deployment (manuelle Freigabe). Deployment: Automatisches Deployment nach den Tests.
GitHub Actions Beispiel¶
name: CI/CD
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
deploy:
needs: test
if: github.ref == ‘refs/heads/main’
runs-on: ubuntu-latest
steps:
- run: deploy.sh
Deployment-Strategien¶
- Rolling – schrittweiser Austausch der Instanzen
- Blue/Green – zwei identische Umgebungen, Umschaltung
- Canary – 5% Traffic auf die neue Version, Metriken beobachten
- Feature Flags – Code deployen, Feature umschalten
Werkzeuge¶
- GitHub Actions, GitLab CI, CircleCI
- ArgoCD (GitOps fuer K8s)
- Jenkins (Enterprise-Legacy)
- Tekton (Cloud-native)
DORA-Metriken¶
- Deployment Frequency
- Lead Time for Changes
- Mean Time to Recovery (MTTR)
- Change Failure Rate
Ziel¶
Das Deployment in die Produktion sollte langweilig, routinemaessig und risikofrei sein. Wenn Sie das Deployment stresst, brauchen Sie ein besseres CI/CD.