Was ist GitHub Actions?
GitHub Actions ist ein mächtiges Workflow-Automatisierungstool, das direkt in GitHub integriert ist. Du definierst Workflows in YAML-Dateien, die auf bestimmte Ereignisse reagieren – zum Beispiel einen Push auf den main-Branch oder die Erstellung eines Pull-Requests. Jeder Workflow besteht aus einem oder mehreren Jobs, die auf GitHub-eigenen oder selbst gehosteten Runnern ausgeführt werden. Die GitHub Marketplace-Community bietet tausende vorgefertigte Actions für nahezu jeden Zweck.
Workflow-Grundlagen: Aufbau einer YAML-Datei
Jeder GitHub Actions Workflow wird unter .github/workflows/ in deinem Repository gespeichert. Hier ein typischer Aufbau:
name: CI/CD Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Build
run: npm run build
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to Server
run: echo "Deploy ausführen..."
CI/CD-Pipeline für eine Node.js-App
Wir bauen eine Pipeline für eine Node.js/Express-Anwendung mit folgenden Schritten: Linten, Testen, Bauen und Deployen auf einen VPS. Die Pipeline wird bei jedem Push auf main sowie bei Pull-Requests ausgelöst.
| Schritt | Action / Befehl | Beschreibung |
|---|---|---|
| 1. Checkout | actions/checkout@v4 | Repository-Code auschecken |
| 2. Node.js Setup | actions/setup-node@v4 | Node.js in gewünschter Version installieren |
| 3. Dependencies | npm ci | Package-lock.json sauber installieren |
| 4. Lint | npm run lint | Codequalität prüfen |
| 5. Tests | npm test | Unit- und Integrationstests ausführen |
| 6. Build | npm run build | App bauen (Static Files oder Bundle) |
| 7. Deploy | scp oder rsync | Artefakte auf Server übertragen |
Geheimnisse sicher verwalten: Secrets & Environments
Deine Pipeline benötigt Zugangsdaten – SSH-Keys, API-Tokens, Passwörter. Diese speicherst du NIEMALS direkt im Workflow. GitHub bietet Repository Secrets (unter Settings → Secrets and variables → Actions), die verschlüsselt abgelegt werden. Für sensible Werte wie Deployment-Keys verwendest du ${{ secrets.MY_SECRET }}. Zusätzlich kannst du Environments definieren (z. B. "Staging" und "Production"), um unterschiedliche Secrets pro Umgebung zu hinterlegen und manuelle Approvals für Production-Deployments zu erzwingen.
Deployment auf einen VPS per SSH
Für das Deployment auf einen eigenen Server nutzt du die Action appleboy/[email protected] oder easingthemes/ssh-deploy@v5. Voraussetzung: Der öffentliche SSH-Key des Runners ist auf dem Zielserver als Deploy-Key hinterlegt. So könnte der Deployment-Step aussehen:
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v4
with:
name: build-output
- name: Copy to server
uses: appleboy/[email protected]
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "dist/*"
target: "/var/www/myapp/"
Matrix-Builds für maximale Kompatibilität
Mit Matrix-Strategien testest du deine Anwendung parallel in mehreren Konfigurationen – ein großer Vorteil von GitHub Actions gegenüber vielen Alternativen:
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci && npm test
So stellst du sicher, dass deine App mit allen relevanten Node.js-Versionen funktioniert – ohne manuelles Testen.
Best Practices für GitHub Actions 2026
| Praxis | Warum? |
|---|---|
| Workflows klein halten | Ein Job pro Verantwortung – bessere Lesbarkeit und Wiederverwendung |
| Actions versionieren | Immer @v1, @v2, @v4 verwenden – nie @main oder @latest |
| Cache nutzen | actions/cache für node_modules oder Docker-Layer – spart Minuten |
| Secrets nie hardcoden | Immer über GitHub Secrets einbinden |
| Self-Hosted Runner prüfen | Für große Artefakte oder spezielle Hardware – aber Sicherheitsrisiken beachten |
| Status Badges einbauen | Workflow-Status in der README.md macht den Build-Status sichtbar |
Fazit
GitHub Actions ist 2026 eine der flexibelsten und am weitesten verbreiteten CI/CD-Plattformen. Die Integration in GitHub ist nahtlos, die YAML-Syntax ist klar und die Marketplace-Community liefert für fast jeden Use Case die passende Action. Mit einer gut strukturierten Pipeline stellst du sicher, dass dein Code automatisch getestet, gebaut und ausgeliefert wird – und du dich auf das Wesentliche konzentrieren kannst: großartige Software zu entwickeln.