Node.js: Bereitstellung mit GitHub Actions
Erfahren Sie, wie Sie Ihren Node.js-Code mit GitHub Actions bereitstellen
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Node.js Cloud Lösung, die zahlreiche Vorteile bietet, darunter:
- Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen
git push.- Nutzen Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
- Genießen Sie sorgenfreie automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
- Erhalten Sie optimale Performance und robuste Sicherheit dank einer privaten und dedizierten VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Node.js Cloud Hosting Lösung von Stackhero auszuprobieren!
GitHub Actions ermöglicht es Ihnen, Aufgaben wie das Bereitstellen Ihres Node.js-Codes auf Produktionsservern zu automatisieren. In diesem Leitfaden zeigen wir Ihnen, wie Sie Ihre Node.js-Anwendung sicher und zuverlässig in Staging- und Produktionsumgebungen mit GitHub Actions bereitstellen.
Wir empfehlen, zwei Branches zu pflegen: staging und production. Wenn Code in diese Branches gepusht wird, wird er automatisch auf den entsprechenden Stackhero-Dienst bereitgestellt.
Eine Staging-Instanz ist nicht zwingend erforderlich. Sie können diesem Leitfaden auch nur mit einer Produktionsinstanz folgen. Um jedoch reibungslose Bereitstellungen zu gewährleisten und Vertrauen zu gewinnen, bevor Sie live gehen, wird dringend empfohlen, sowohl Staging- als auch Produktionsumgebungen zu pflegen. Dieser Ansatz ist ein Industriestandard, der helfen kann, häufige Bereitstellungsprobleme zu vermeiden.
Bevor Sie beginnen, stellen Sie sicher, dass Sie ein GitHub-Konto mit einem Repository haben, das Ihren Code hostet.
Erstellen der Node.js-Dienste
Melden Sie sich zuerst bei Ihrem Stackhero-Dashboard an und erstellen Sie zwei Stackhero-Dienste: einen für Staging und einen für Produktion. Zur Klarheit können Sie diese Dienste "Staging" und "Production" nennen.
Haben Sie noch kein Stackhero-Konto? Sie können in nur zwei Minuten kostenlos eines erstellen und Ihre Node.js-Cloud-Dienste in nur wenigen Klicks einrichten.
Beispiel für Node.js-Dienste
SSH-Schlüssel konfigurieren
SSH-Schlüssel ermöglichen es GitHub Actions, sicher eine Verbindung zu Ihrem Node.js-Dienst herzustellen, wenn Ihr Code bereitgestellt wird. Dieser Schritt ist entscheidend, um Ihre Stackhero-Dienste zu schützen.
Erzeugen Sie auf Ihrem Computer neue SSH-Schlüssel mit diesem Befehl:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Den öffentlichen Schlüssel festlegen
Rufen Sie den gerade generierten öffentlichen Schlüssel ab, indem Sie ausführen:
cat /tmp/ssh_key.pub
Wählen Sie dann im Stackhero-Dashboard Ihren Produktions-Node.js-Dienst aus und klicken Sie auf die Schaltfläche Konfigurieren.
Dienst-Einstellungen abrufen
Weiter:
- Klicken Sie in SSH-öffentliche Schlüssel auf Einen öffentlichen Schlüssel hinzufügen.
- Geben Sie für Beschreibung
GitHub Actionein. - Fügen Sie für Schlüssel den abgerufenen öffentlichen Schlüssel ein.
Dienst-Einstellungen abrufen
Den privaten Schlüssel festlegen
Wechseln Sie zur GitHub-Website und öffnen Sie Ihr Projekt-Repository. Klicken Sie dann auf Settings und wählen Sie Environments. Klicken Sie auf New environment.
GitHub-Umgebungen konfigurieren
Geben Sie "production" für den Namen ein und bestätigen Sie Ihre Aktion.
Umgebung festlegen
Klicken Sie auf die Schaltfläche No restriction und wählen Sie dann Selected branches and tags.
Umgebungsbeschränkungen festlegen
Klicken Sie nun auf Add deployment branch or tag rule, geben Sie "production" im Feld Name pattern ein und klicken Sie auf Add rule.
Umgebungsbranch festlegen
Umgebungsbranch festlegen
Klicken Sie anschließend in Environment secrets auf Add secret.
Secret hinzufügen
Rufen Sie den generierten privaten Schlüssel ab, indem Sie ausführen:
cat /tmp/ssh_key
Geben Sie in GitHub STACKHERO_SSH_PRIVATE_KEY als Name ein und fügen Sie Ihren privaten Schlüssel in das Feld Wert ein.
SSH-privaten Schlüssel-Secret festlegen
Klicken Sie dann in Environment variables auf Add variable.
Variablen festlegen
Geben Sie STACKHERO_ENDPOINT als Name ein und fügen Sie Ihren Node.js-Dienstendpunkt in das Feld Wert ein. Sie finden diesen Endpunkt in Ihrem Stackhero-Dashboard.
Endpunktvariable festlegen
Wenn Sie Ihren Dienst-Domainnamen 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, sobald Sie sie auf Stackhero und GitHub eingerichtet haben:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions-Workflow konfigurieren
Erstellen Sie in Ihrem Git-Repository ein Verzeichnis namens .github/workflows und fügen Sie eine Datei namens deploy-to-stackhero.yml hinzu.
# Datei: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Listen Sie die Branches auf, die die Bereitstellungsaktion auslösen. Stellen Sie sicher, dass in GitHub (unter "Settings" > "Environments") für jeden Branch eine Umgebung existiert.
# 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:
# STACKHERO_SSH_PRIVATE_KEY und STACKHERO_ENDPOINT sollten in der jeweiligen GitHub-Umgebung festgelegt werden.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nachdem Sie die Workflow-Datei erstellt haben, committen Sie Ihre Änderungen mit den folgenden Befehlen:
git add -A .
git commit -m "GitHub Actions hinzufügen, um auf Stackhero bereitzustellen"
Erstellen Sie einen Produktionsbranch mit:
git checkout -b production
Schließlich pushen Sie Ihre Änderungen zu GitHub:
git push --set-upstream origin production
Dieser Push sendet Ihren Code an den production-Branch und löst GitHub Actions aus, um Ihren Code auf den Stackhero-Dienst bereitzustellen. Um die Bereitstellung zu überprüfen, navigieren Sie zu Ihrem Projekt auf GitHub und klicken Sie auf Actions.
GitHub Actions, die in Produktion bereitgestellt wurden
Herzlichen Glückwunsch! Ihr Code ist jetzt für die automatische Bereitstellung in der Produktion über GitHub Actions eingerichtet.
Erstellen der Staging-Umgebung
Das Einrichten der Staging-Umgebung ist ähnlich wie die Produktionsumgebung. Wiederholen Sie die obigen Schritte und ersetzen Sie production durch staging, wo nötig.
Beginnen Sie mit dem Erstellen eines Staging-Branches mit:
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 den vorgesehenen Node.js-Dienst bereitstellen.
Weiterführende Schritte
Es ist eine gute Praxis, die Branches production und staging zu schützen, um direkte Pushes zu vermeiden. Erstellen Sie stattdessen eine Pull-Request für den Staging-Branch und führen Sie Änderungen von Ihrem Entwicklungsbranch zusammen. Sobald Sie die Änderungen auf der Staging-Plattform validiert haben, führen Sie die Pull-Request in den production-Branch zusammen.
Dieser Ansatz stellt sicher, dass nur autorisierte Personen auf Staging und Produktion pushen können. Er sorgt auch dafür, dass neue Funktionen gründlich getestet werden, bevor sie live gehen.