Ruby: Bereitstellung mit GitHub Actions
Wie Sie Ihren Ruby-Code mit GitHub Actions bereitstellen
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Ruby 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 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 Ruby Cloud Hosting Lösung von Stackhero auszuprobieren!
GitHub Actions ermöglicht es Ihnen, Aufgaben wie das Bereitstellen Ihres Ruby-Codes auf Produktionsservern zu automatisieren.
In diesem Leitfaden lernen Sie, wie Sie GitHub Actions sicher und zuverlässig nutzen, um Ihren Ruby-Code in Staging- und Produktionsumgebungen bereitzustellen.
Dazu werden Sie zwei Branches pflegen: staging und production, wobei der Code, der in diese Branches gepusht wird, automatisch auf der entsprechenden Stackhero-Instanz bereitgestellt wird.
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 der Produktion voll Vertrauen zu haben, wird dringend empfohlen, sowohl eine Staging- als auch eine Produktionsinstanz zu pflegen. Diese Praxis ist ein Industriestandard und eine gute Praxis, die Ihnen hilft, zahlreiche Probleme zu vermeiden.
Um diesem Leitfaden zu folgen, benötigen Sie ein GitHub-Konto mit einem Repository, das Ihren Code hostet.
Erstellen der Ruby-Dienste
Gehen Sie zu Ihrem Stackhero-Dashboard und erstellen Sie zwei Stackhero-Dienste, einen für Staging und einen für Produktion. Um Verwirrung zu vermeiden, empfehlen wir, diese Dienste in "Production" und "Staging" umzubenennen.
Haben Sie noch kein Stackhero-Konto? Sie können in nur zwei Minuten kostenlos eines erstellen und dann Ihre Ruby-Cloud-Dienste mit nur wenigen Klicks erstellen.
Beispiel für Produktions- und Staging-Dienste
SSH-Schlüssel konfigurieren
SSH-Schlüssel geben GitHub Actions das Recht, sich mit Ihrem Ruby-Dienst zu verbinden, um Ihren Code bereitzustellen. Dies ist ein wesentlicher Bestandteil der Sicherung Ihrer Stackhero-Dienste.
Erstellen Sie auf Ihrem Computer neue SSH-Schlüssel:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Den öffentlichen Schlüssel festlegen
Rufen Sie den gerade generierten öffentlichen Schlüssel ab:
cat /tmp/ssh_key.pub
Wählen Sie im Stackhero-Dashboard Ihren "production" Ruby-Dienst aus und klicken Sie auf die Schaltfläche "Konfigurieren".
Dienst-Einstellungen abrufen
Dann:
- Klicken Sie in
SSH public keysaufAdd a public key. - Setzen Sie in
DescriptionGitHub Action. - Fügen Sie in
Keyden Inhalt des öffentlichen Schlüssels ein, den Sie auf Ihrem Computer haben.
Dienst-Einstellungen abrufen
Den privaten Schlüssel festlegen
Gehen Sie zur GitHub-Website und wählen Sie Ihr Projekt aus.
Klicken Sie auf Settings/Environments und dann auf New environment.
GitHub-Umgebungen konfigurieren
Setzen Sie in Name "production" 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 auf Add deployment branch or tag rule, geben Sie "production" in Name pattern ein und klicken Sie auf Add rule.
Umgebungsbranch festlegen
Umgebungsbranch festlegen
Klicken Sie in Environment secrets auf Add secret.
Secret hinzufügen
Rufen Sie den zuvor auf Ihrem Computer generierten privaten Schlüssel ab:
cat /tmp/ssh_key
Setzen Sie in Name STACKHERO_SSH_PRIVATE_KEY. In Value fügen Sie Ihren privaten Schlüssel ein.
SSH-Privatschlüssel-Secret festlegen
Klicken Sie in Environment variables auf Add variable.
Variablen festlegen
Setzen Sie in Name STACKHERO_ENDPOINT. In Value fügen Sie Ihren Ruby-Dienst-Endpunkt ein. Sie finden ihn in Ihrem Stackhero-Dashboard.
Endpunktvariable 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
Da Sie die zuvor generierten SSH-Schlüssel nicht mehr benötigen, können Sie sie aus Sicherheitsgründen von Ihrem Computer löschen:
rm /tmp/ssh_key /tmp/ssh_key.pub
GitHub Actions-Workflow konfigurieren
Erstellen Sie in Ihrem Git-Repository auf Ihrem Computer ein Verzeichnis namens .github/workflows.
Erstellen Sie in diesem Verzeichnis eine Datei namens deploy-to-stackhero.yml.
# 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 (in "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 }}
Committen Sie Ihre Änderungen:
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Erstellen Sie dann einen Produktionsbranch:
git checkout -b production
Schließlich pushen Sie Ihre Änderungen zu GitHub:
git push --set-upstream origin production
Dieser letzte git push-Befehl wird den Code von Ihrem Computer zum GitHub-Branch production pushen. GitHub Actions wird automatisch ausgeführt und diesen Code auf Ihrer Stackhero-Instanz bereitstellen.
Um diese Aktion zu überprüfen, gehen Sie zur GitHub-Website, wählen Sie Ihr Projekt aus und klicken Sie auf Actions.
GitHub Actions, die in die Produktion bereitgestellt wurden
Herzlichen Glückwunsch, Sie können jetzt Ihren Code automatisch über GitHub Actions in der Produktion bereitstellen!
Erstellen der Staging-Umgebung
Das Erstellen der Staging-Umgebung ist ähnlich wie das Einrichten der Produktionsumgebung.
Um sie zu erstellen, wiederholen Sie die Schritte aus den vorherigen Abschnitten dieses Leitfadens, indem Sie einfach production durch staging ersetzen.
Erstellen Sie dann einen Staging-Branch:
git checkout -b staging
Schließlich pushen Sie Ihre Änderungen zu GitHub:
git push --set-upstream origin staging
GitHub Actions wird Ihren Staging-Branch automatisch auf der für Staging vorgesehenen Ruby-Instanz bereitstellen.
Weiterführende Schritte
Eine gute Praxis ist es, die Branches production und staging zu schützen, um direkte Pushes zu verhindern.
In diesem Fall muss ein Pull-Request für den staging-Branch erstellt und dann von Personen mit den Rechten, Code auf Staging zu pushen, zusammengeführt werden.
Sobald er auf der Staging-Plattform validiert ist, kann der Pull-Request von denselben Personen, die die Rechte haben, in den production-Branch zusammengeführt werden.
Dieser Ansatz gewährleistet Sicherheit (nur autorisierte Personen können auf staging und production pushen) und Zuverlässigkeit (neue Funktionen werden zuerst auf einer staging-Plattform getestet, bevor sie auf den production-Branch gepusht werden).