Python: Bereitstellung mit GitHub Actions
Wie Sie Ihren Python-Code mit GitHub Actions bereitstellen
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Python-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen
git push.- Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
- Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
- Erhalten Sie optimale Leistung und robuste Sicherheit dank einer privaten und dedizierten VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Python-Cloud-Hosting-Lösung von Stackhero auszuprobieren!
GitHub Actions ermöglicht es Ihnen, Aufgaben zu automatisieren, wie z.B. das Bereitstellen Ihres Python-Codes auf Produktionsservern.
In diesem Leitfaden lernen Sie, wie Sie GitHub Actions sicher und zuverlässig nutzen, um Ihren Python-Code in Staging- und Produktionsumgebungen bereitzustellen.
Dazu werden Sie zwei Branches pflegen: staging und production. Code, der in diese Branches gepusht wird, wird automatisch auf die entsprechende Stackhero-Instanz bereitgestellt.
Eine Staging-Instanz ist nicht zwingend erforderlich. Sie können diesem Leitfaden folgen und nur eine Produktionsinstanz haben. Um jedoch reibungslose Bereitstellungen zu gewährleisten und bei der Bereitstellung in die Produktion voll Vertrauen zu haben, wird dringend empfohlen, sowohl eine Staging- als auch eine Produktionsinstanz zu pflegen. Diese Praxis ist ein Industriestandard und ein sinnvoller Ansatz, der Ihnen helfen kann, zahlreiche Probleme zu vermeiden.
Bevor Sie beginnen, stellen Sie sicher, dass Sie ein GitHub-Konto mit einem Repository haben, das Ihren Code hostet.
Erstellen der Python-Dienste
Besuchen Sie Ihr Stackhero-Dashboard und erstellen Sie zwei Stackhero-Dienste, einen für Staging und einen für Produktion. Zur Klarheit können Sie diese Dienste in "Production" und "Staging" umbenennen.
Haben Sie noch kein Stackhero-Konto? Sie können sich in nur zwei Minuten kostenlos anmelden und dann Ihre Python-Cloud-Dienste mit nur wenigen Klicks erstellen.
Beispiel für Produktions- und Staging-Dienste
SSH-Schlüssel konfigurieren
SSH-Schlüssel ermöglichen es GitHub Actions, sicher mit Ihrem Python-Dienst für die Codebereitstellung zu verbinden. Dieser Schritt ist entscheidend, um Ihre Stackhero-Dienste zu schützen.
Erzeugen Sie auf Ihrem Computer neue SSH-Schlüssel, indem Sie folgendes ausführen:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Den öffentlichen Schlüssel festlegen
Zuerst rufen Sie den gerade erzeugten öffentlichen Schlüssel ab:
cat /tmp/ssh_key.pub
Wählen Sie dann im Stackhero-Dashboard Ihren "production" Python-Dienst aus und klicken Sie auf die Schaltfläche "Konfigurieren".
Dienst-Einstellungen abrufen
Folgen Sie diesen Schritten:
- Klicken Sie in
SSH public keysaufAdd a public key. - Geben Sie in
DescriptionGitHub Actionein. - Fügen Sie in
Keyden von Ihrem Computer kopierten öffentlichen Schlüssel ein.
Öffentlichen Schlüssel hinzufügen
Den privaten Schlüssel festlegen
Navigieren Sie zu Ihrer GitHub-Projektseite und klicken Sie auf Settings, dann auf Environments. Wählen Sie New environment.
GitHub-Umgebungen konfigurieren
Geben Sie im Feld Name "production" ein und bestätigen Sie.
Umgebung festlegen
Klicken Sie auf die Schaltfläche No restriction und wählen Sie Selected branches and tags.
Umgebungsbeschränkungen festlegen
Klicken Sie anschließend auf Add deployment branch or tag rule, geben Sie "production" im Feld Name pattern ein und klicken Sie auf Add rule.
Umgebungs-Branch festlegen
Umgebungs-Branch festlegen
Klicken Sie im Abschnitt Environment secrets auf Add secret.
Secret hinzufügen
Rufen Sie nun den zuvor generierten privaten Schlüssel ab:
cat /tmp/ssh_key
Verwenden Sie in der Secret-Konfiguration STACKHERO_SSH_PRIVATE_KEY als Name und fügen Sie den privaten Schlüssel als Wert ein.
SSH-Privatschlüssel-Secret festlegen
Klicken Sie dann im Abschnitt Environment variables auf Add variable.
Variablen festlegen
Geben Sie STACKHERO_ENDPOINT als Name ein und fügen Sie Ihren Python-Dienst-Endpunkt als Wert ein. Sie finden diesen Endpunkt in Ihrem Stackhero-Dashboard.
Endpunkt-Variable festlegen
Wenn Sie den Domainnamen Ihres Dienstes angepasst haben, verwenden Sie die angepasste Version anstelle von xxxxxx.stackhero-network.com.
Die generierten Schlüssel löschen
Aus Sicherheitsgründen entfernen Sie die SSH-Schlüssel von Ihrem Computer, da Sie sie nicht mehr benötigen:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions-Workflow konfigurieren
Erstellen Sie in Ihrem Git-Repository ein Verzeichnis namens .github/workflows, falls es noch nicht existiert. Erstellen Sie dann eine Datei namens deploy-to-stackhero.yml in diesem Verzeichnis.
# Datei: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Liste der Branches, die die Bereitstellungsaktion nach einem Git-Push auslösen.
# Vergessen Sie nicht, eine Umgebung zu erstellen, die dem Branch-Namen in GitHub entspricht (unter "Settings"/"Environments").
# Fügen Sie dann das entsprechende Secret "STACKHERO_SSH_PRIVATE_KEY" und die Variable "STACKHERO_ENDPOINT" in dieser Umgebung hinzu.
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Das Secret "STACKHERO_SSH_PRIVATE_KEY" und die Variable "STACKHERO_ENDPOINT" sollten in der entsprechenden Branch-Umgebung auf GitHub unter "Settings"/"Environments" definiert sein.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Bestätigen Sie diese Änderungen, indem Sie folgendes ausführen:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Erstellen Sie dann einen Produktions-Branch:
git checkout -b production
Schließlich pushen Sie Ihre Änderungen zu GitHub:
git push --set-upstream origin production
Dieser Befehl pusht Ihren Code in den production Branch von GitHub und löst GitHub Actions aus, um den Code auf Ihrer Stackhero-Instanz bereitzustellen.
Um die Bereitstellung zu überprüfen, besuchen Sie die GitHub-Projektseite und klicken Sie auf Actions.
GitHub Actions, die in die Produktion bereitgestellt wurden
Herzlichen Glückwunsch, Sie können jetzt Ihren Code automatisch in die Produktion mit GitHub Actions bereitstellen!
Erstellen der Staging-Umgebung
Das Einrichten der Staging-Umgebung ist sehr ähnlich wie die Konfiguration der Produktionsumgebung. Wiederholen Sie einfach die obigen Schritte und ersetzen Sie production durch staging.
Nachdem Sie die Umgebung eingerichtet haben, erstellen Sie einen Staging-Branch:
git checkout -b staging
Pushen Sie dann Ihren Staging-Branch zu GitHub:
git push --set-upstream origin staging
GitHub Actions wird Ihren Staging-Branch automatisch auf die für Staging vorgesehene Python-Instanz bereitstellen.
Weiterführende Schritte
Es ist eine gute Praxis, die production und staging Branches zu schützen, um direkte Pushes zu verhindern. Mit dieser Konfiguration müssen Pull Requests für den staging Branch erstellt und von Teammitgliedern mit den entsprechenden Rechten zusammengeführt werden. Sobald sie auf der Staging-Plattform validiert sind, können die Pull Requests von denselben autorisierten Personen in den production Branch zusammengeführt werden.
Dieser Ansatz erhöht die Sicherheit, indem er sicherstellt, dass nur genehmigte Änderungen bereitgestellt werden, und verbessert die Zuverlässigkeit, indem neue Funktionen auf der Staging-Plattform getestet werden, bevor sie die Produktion erreichen.