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.

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-DiensteBeispiel für Node.js-Dienste

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 ""

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 abrufenDienst-Einstellungen abrufen

Weiter:

  1. Klicken Sie in SSH-öffentliche Schlüssel auf Einen öffentlichen Schlüssel hinzufügen.
  2. Geben Sie für Beschreibung GitHub Action ein.
  3. Fügen Sie für Schlüssel den abgerufenen öffentlichen Schlüssel ein.

Dienst-Einstellungen abrufenDienst-Einstellungen abrufen

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 konfigurierenGitHub-Umgebungen konfigurieren

Geben Sie "production" für den Namen ein und bestätigen Sie Ihre Aktion.

Umgebung festlegenUmgebung festlegen

Klicken Sie auf die Schaltfläche No restriction und wählen Sie dann Selected branches and tags.

Umgebungsbeschränkungen festlegenUmgebungsbeschrä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 festlegenUmgebungsbranch festlegen

Umgebungsbranch festlegenUmgebungsbranch festlegen

Klicken Sie anschließend in Environment secrets auf Add secret.

Secret hinzufügenSecret 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 festlegenSSH-privaten Schlüssel-Secret festlegen

Klicken Sie dann in Environment variables auf Add variable.

Variablen festlegenVariablen 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 festlegenEndpunktvariable festlegen

Wenn Sie Ihren Dienst-Domainnamen angepasst haben, verwenden Sie die angepasste Version anstelle von xxxxxx.stackhero-network.com.

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

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 wurdenGitHub 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.

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.

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.