Automatisches Deployment mit GitHub Actions: CI/CD Pipeline Einrichtung
CI/CD-Pipelines mit GitHub Actions erstellen: Docker Build und Push, SSH-Server-Deployment, Test-Automatisierung, Secrets-Verwaltung und Workflow-Optimierung.
Automatisches Deployment mit GitHub Actions: CI/CD Pipeline Einrichtung
GitHub Actions ist eine leistungsstarke CI/CD-Plattform, die Code-Änderungen automatisch testet, baut und auf dem Server deployt. In diesem Leitfaden bauen wir eine produktionsreife Pipeline von Grund auf.
Was ist GitHub Actions?
GitHub Actions ist eine in GitHub-Repositories integrierte Automatisierungsplattform:
Reagiert auf Ereignisse wie Push, PR und Schedule
Führt parallele und sequentielle Workflows aus
2.000 Minuten/Monat kostenlos (unbegrenzt für öffentliche Repos)
Erweiterbar mit Tausenden von fertigen Actions
GitHub Actions Workflow-Dateien werden im YAML-Format im Verzeichnis .github/workflows/ gespeichert.
steps:-name:Anwendungskonfigurationenv:DATABASE_URL:${{secrets.DATABASE_URL}}JWT_SECRET:${{secrets.JWT_SECRET}}API_KEY:${{secrets.API_KEY}}run:|
echo "Konfiguration geladen"
# Secrets werden nie in Logs ausgegeben, automatisch maskiert
jobs:deploy-production:runs-on:ubuntu-latestenvironment:name:productionurl:https://example.comsteps:-name:Production-Deploymentrun:echo"Deployment in Production"
In GitHub unter Settings > Environments > production:
Durch die Einrichtung einer vollautomatischen CI/CD-Pipeline mit GitHub Actions können Sie die Codequalität verbessern, Deployment-Fehler reduzieren und Ihren Entwicklungsprozess beschleunigen. Mit Secrets-Verwaltung, Cache-Optimierung und Environment Protection Rules erhalten Sie eine produktionsreife Pipeline.
Häufig gestellte Fragen
Ist GitHub Actions kostenlos?
Für öffentliche Repositories vollständig kostenlos und unbegrenzt. Private Repositories erhalten 2.000 kostenlose Minuten pro Monat. Wenn dieses Limit beim GitHub Free-Plan überschritten wird, pausieren Workflows. GitHub Pro und Team-Pläne beinhalten mehr Minuten.
Wie erstelle ich einen SSH-Private-Key und füge ihn zu GitHub hinzu?
Erstellen Sie ein Schlüsselpaar auf Ihrem lokalen Rechner mit 'ssh-keygen -t ed25519 -C "github-actions"'. Fügen Sie den Public Key (~/.ssh/id_ed25519.pub) zu ~/.ssh/authorized_keys auf Ihrem Server hinzu. Speichern Sie den Private Key (~/.ssh/id_ed25519) in Ihrem GitHub-Repo unter Settings > Secrets als SSH_PRIVATE_KEY.
Wie funktioniert Job-Abhängigkeit mit needs?
'needs: test' bedeutet, dass dieser Job erst ausgeführt wird, wenn der 'test'-Job erfolgreich abgeschlossen ist. Verwenden Sie 'needs: [test, build]' für mehrere Abhängigkeiten. Wenn ein Job fehlschlägt, werden abhängige Jobs automatisch abgebrochen.
Ist es möglich, einen Workflow nur auszulösen, wenn bestimmte Dateien geändert werden?
Ja, verwenden Sie 'on.push.paths', um bestimmte Dateien oder Verzeichnisse zu überwachen. Zum Beispiel löst 'paths: ["src/**", "package.json"]' den Workflow nur aus, wenn diese Dateien geändert werden. Verwenden Sie 'paths-ignore', um bestimmte Dateien auszuschließen.
Warum ist Docker Build Cache wichtig?
Docker Build Cache verhindert das Neuerstellen unveränderter Schichten. 'cache-from: type=gha' verwendet den GitHub Actions Cache. Dies kann die Build-Zeit um 50-80% reduzieren. Es macht besonders bei Abhängigkeits-Installationsschritten (npm install, pip install) einen großen Unterschied.
Was bewirken Environment Protection Rules?
Sie fügen einen Genehmigungsmechanismus für kritische Umgebungen wie Production hinzu. Mit 'Required reviewers' kann ohne Genehmigung bestimmter Personen kein Deployment durchgeführt werden. 'Wait timer' legt eine Wartezeit vor dem Deployment fest. Dies verhindert versehentliche Deployments in Production.
Multi-Container-Anwendungen mit Docker Compose definieren und verwalten: Service-Abhängigkeiten, Umgebungsvariablen, Health Checks, Skalierung und Production-Deployment. Umfassender Leitfaden.
Caddy Web Server Installation, Caddyfile-Konfiguration, automatisches Let's Encrypt SSL, Reverse Proxy, Static Site Hosting, PHP-FPM-Integration und Performance-Einstellungen.