Jedes Mal manuell auf den Server verbinden, Code ziehen, neu starten – das ist langsam, fehleranfällig und macht keinen Spaß. Eine CI/CD-Pipeline erledigt das vollautomatisch bei jedem Git-Push.
GitHub Actions Grundkonzepte
GitHub Actions sind in YAML-Dateien im Verzeichnis .github/workflows/ deines Repositories definiert. Jede Datei ist ein Workflow, der durch Events (Push, PR, Schedule) ausgelöst wird.
- Workflow – die gesamte Automatisierung
- Job – eine Gruppe von Steps, läuft auf einem Runner
- Step – einzelne Aufgabe (Shell-Befehl oder Action)
- Action – vorgefertigte Bausteine aus dem Marketplace
- Runner – die VM auf der der Job läuft (ubuntu-latest, etc.)
Minimales Beispiel: Tests bei jedem Push
Eine einfache Pipeline die Python-Tests ausführt:
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -r requirements.txt
- run: pytest --tb=short
Docker-Image bauen und zu Registry pushen
Bei erfolgreichem Test: Docker-Image bauen und zu GitHub Container Registry (GHCR) oder Docker Hub pushen:
- name: Build & Push Docker Image
uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/meinuser/meinapp:latest
Automatisches Deployment via SSH
Nach dem Push des Images den Server per SSH benachrichtigen:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: deploy
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
docker pull ghcr.io/meinuser/meinapp:latest
docker-compose up -d --force-recreate
Secrets sicher verwalten
SSH-Keys, API-Tokens und Passwörter niemals in YAML-Dateien – immer über GitHub Secrets (Repository → Settings → Secrets and Variables → Actions). Diese werden als verschlüsselte Umgebungsvariablen verfügbar gemacht.
Fortgeschrittene Patterns
- Matrix-Builds: Gleichzeitig auf Python 3.10, 3.11, 3.12 testen
- Environments: Staging vs. Production mit manueller Freigabe
- Caching: pip/npm-Dependencies cachen für schnellere Runs
- Concurrency: Parallele Deployments für denselben Branch verhindern
Fazit
Eine CI/CD-Pipeline amortisiert sich nach wenigen Wochen. Entwickler können sich auf Code konzentrieren statt auf manuelle Deployments. Wir richten CI/CD-Pipelines für GitHub, GitLab und Bitbucket ein – vom einfachen Test-Run bis zum vollautomatischen Kubernetes-Rollout.
Ihr Projekt umsetzen?
Wir setzen genau das um, was in diesem Artikel beschrieben wird – für Ihr Unternehmen, individuell und zuverlässig.
Kostenlos anfragen →