Ruby: Deployen met GitHub Actions
Hoe u uw Ruby-code kunt deployen met GitHub Actions
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare Ruby cloud oplossing die tal van voordelen biedt, waaronder:
- Implementeer uw applicatie in seconden met een eenvoudige
git push.- Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
- Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
- Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Ruby cloud hosting oplossing van Stackhero te proberen!
GitHub Actions maakt het eenvoudig om taken te automatiseren, zoals het deployen van uw Ruby-code naar uw productieomgevingen. Er zijn geen handmatige stappen nodig.
In deze handleiding ontdekt u hoe u GitHub Actions veilig en betrouwbaar kunt instellen om uw Ruby-code automatisch te deployen naar zowel staging- als productieomgevingen. Deze aanpak zorgt voor consistente deployments en verkleint de kans op fouten.
Om te beginnen werkt u met twee branches in uw GitHub-repository: staging en production. Telkens wanneer u code pusht naar deze branches, worden uw wijzigingen automatisch gedeployed naar de bijbehorende Stackhero-instantie.
Het hebben van een staging-instantie is optioneel. U kunt deze handleiding volgen met alleen een productieomgeving, maar het is sterk aanbevolen om zowel staging- als productieomgevingen in te richten. Dit wordt gezien als een best practice binnen de industrie en helpt problemen te detecteren voordat ze uw productiegebruikers bereiken.
Voordat u begint, zorg ervoor dat u een GitHub-account heeft en een repository met uw Ruby-code.
Ruby-services aanmaken
Ga naar uw Stackhero-dashboard om twee Ruby-services aan te maken: één voor staging en één voor productie. Voor de duidelijkheid is het verstandig om deze services te hernoemen naar "Production" en "Staging".
Heeft u nog geen Stackhero-account? U kunt zich gratis aanmelden in slechts een paar minuten en vervolgens uw Ruby cloud services met een paar klikken aanmaken.
Voorbeeld van productie- en staging-services
SSH-sleutels configureren
Om GitHub Actions toe te staan uw code te deployen, moet u SSH-sleutels instellen. Dit zorgt ervoor dat alleen geautoriseerde acties verbinding kunnen maken met uw Stackhero-services, waardoor uw deployments veilig blijven.
U kunt een nieuw SSH-sleutelpaar genereren op uw computer met:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
De publieke sleutel instellen
Haal vervolgens de publieke sleutel op die u zojuist heeft aangemaakt:
cat /tmp/ssh_key.pub
Selecteer in het Stackhero-dashboard uw "production" Ruby-service en klik op de knop "Configure".
Service-instellingen openen
Vervolgens:
- Klik onder
SSH public keysopAdd a public key. - Vul bij
Descriptionin:GitHub Action. - Plak bij
Keyde inhoud van uw publieke sleutel vanaf uw computer.
Service-instellingen openen
De private sleutel instellen
Ga nu naar de GitHub-website en open uw project.
Ga naar Settings > Environments en klik op New environment.
GitHub-omgevingen configureren
Geef uw omgeving de naam "production" en sla deze op.
Omgeving instellen
Klik op de knop No restriction en kies Selected branches and tags.
Omgevingsrestricties instellen
Klik op Add deployment branch or tag rule, voer "production" in als patroon en voeg de regel toe.
Omgevingsbranch instellen
Omgevingsbranch instellen
Om uw SSH private key veilig op te slaan, gaat u naar Environment secrets en klikt u op Add secret.
Secret toevoegen
Haal uw private key op vanaf uw computer:
cat /tmp/ssh_key
Voer bij Name in: STACKHERO_SSH_PRIVATE_KEY. Bij Value plakt u de inhoud van uw private key.
SSH private key secret instellen
Voeg vervolgens het endpoint van uw Ruby-service toe als omgevingsvariabele. Klik op Add variable onder Environment variables.
Variabelen instellen
Voer bij Name in: STACKHERO_ENDPOINT. Bij Value plakt u het endpoint van uw Ruby-service, te vinden in uw Stackhero-dashboard.
Endpointvariabele instellen
Als u een eigen domeinnaam voor uw service heeft ingesteld, gebruik dan dat eigen domein in plaats van <XXXXXX>.stackhero-network.com.
De gegenereerde sleutels verwijderen
Nadat uw sleutels zijn ingesteld in Stackhero en GitHub, kunt u ze van uw computer verwijderen voor extra veiligheid.
rm /tmp/ssh_key /tmp/ssh_key.pub
De GitHub Actions workflow configureren
Maak op uw lokale machine, in uw Git-repository, een map aan genaamd .github/workflows. Maak in deze map een bestand aan met de naam deploy-to-stackhero.yml.
# Bestand: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Lijst van branches die de deploy-actie triggeren na een git push.
# Vergeet niet om een omgeving aan te maken die overeenkomt met de branchnaam in GitHub (onder "Settings"/"Environments").
# Voeg vervolgens het bijbehorende secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" toe aan deze omgeving.
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Het secret "STACKHERO_SSH_PRIVATE_KEY" en de variabele "STACKHERO_ENDPOINT" moeten zijn ingesteld in de bijbehorende branch-omgeving op GitHub onder "Settings"/"Environments".
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nadat u het workflowbestand heeft aangemaakt, kunt u uw wijzigingen committen.
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Maak vervolgens een production branch aan.
git checkout -b production
Push ten slotte uw wijzigingen naar GitHub.
git push --set-upstream origin production
Deze laatste git push uploadt uw code naar de production branch op GitHub. GitHub Actions zal automatisch starten en uw code deployen naar uw Stackhero-instantie.
Om uw workflow in actie te zien, gaat u naar de GitHub-pagina van uw project en klikt u op Actions.
GitHub Actions die naar productie heeft gedeployed
Gefeliciteerd, u heeft zojuist continuous deployment naar productie opgezet met GitHub Actions.
De staging-omgeving aanmaken
Het opzetten van de staging-omgeving verloopt op exact dezelfde manier als productie. Herhaal simpelweg bovenstaande stappen, waarbij u production vervangt door staging waar nodig.
Zodra uw staging-omgeving is ingericht, kunt u een staging branch aanmaken.
git checkout -b staging
Push uw staging branch naar GitHub.
git push --set-upstream origin staging
GitHub Actions zal nu automatisch uw staging branch deployen naar uw toegewezen Stackhero Ruby-instantie voor staging.
Verder gaan
Om uw deployments extra te beveiligen, is het verstandig om uw production en staging branches te beschermen. Dit betekent dat directe pushes worden beperkt en wijzigingen via een pull request moeten verlopen. Teamleden met de juiste rechten kunnen pull requests naar staging beoordelen en goedkeuren, en zodra alles akkoord is, kunnen de wijzigingen op dezelfde manier naar production worden gemerged.
Door deze workflow te volgen, verhoogt u de veiligheid (alleen geautoriseerde gebruikers kunnen deployen naar staging en production) en de betrouwbaarheid (alle nieuwe features worden eerst in staging getest voordat ze naar productie gaan). Dit helpt om uw deployments soepel te laten verlopen en uw productieomgeving stabiel te houden.