Node.js: Deployen met GitHub Actions
Leer hoe u uw Node.js-code kunt deployen met GitHub Actions
👋 Welkom bij de documentatie van Stackhero!
Stackhero biedt een kant-en-klare Node.js 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 Node.js cloud hosting oplossing van Stackhero te proberen!
GitHub Actions maakt het eenvoudig om taken te automatiseren, zoals het deployen van uw Node.js-code naar productieomgevingen. In deze handleiding laten we zien hoe u uw Node.js-applicatie veilig en betrouwbaar kunt deployen naar zowel staging- als productieomgevingen met behulp van GitHub Actions.
Wij adviseren om twee branches te onderhouden: staging en production. Wanneer u code pusht naar een van deze branches, worden uw wijzigingen automatisch gedeployed naar de bijbehorende Stackhero-service.
Het hebben van een staging-omgeving is optioneel. U kunt deze handleiding ook volgen met alleen een productieomgeving. Om het deploymentproces soepeler te laten verlopen en meer vertrouwen te krijgen voordat u live gaat, raden wij sterk aan om zowel een staging- als een productieomgeving te gebruiken. Deze aanpak is breed geaccepteerd in de sector en helpt veelvoorkomende deploymentproblemen te voorkomen.
Voordat u begint, zorg ervoor dat u een GitHub-account heeft en een repository waarin uw Node.js-code staat.
Node.js-services aanmaken
Log eerst in op uw Stackhero-dashboard en maak twee Stackhero-services aan: één voor staging en één voor productie. Voor de duidelijkheid kunt u deze services "Staging" en "Production" noemen.
Als u nog geen Stackhero-account heeft, kunt u er gratis binnen twee minuten een aanmaken en uw Node.js cloudservices in enkele klikken opzetten.
Voorbeeld van Node.js-services
SSH-sleutels configureren
SSH-sleutels stellen GitHub Actions in staat om veilig verbinding te maken met uw Node.js-service tijdens het deployen van uw code. Dit is een cruciale stap om uw Stackhero-services te beveiligen.
Op uw computer kunt u nieuwe SSH-sleutels genereren met:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
De publieke sleutel instellen
Om de zojuist aangemaakte publieke sleutel te bekijken, voert u uit:
cat /tmp/ssh_key.pub
Ga vervolgens in uw Stackhero-dashboard naar uw productie Node.js-service en klik op de knop Configure.
Service-instellingen openen
Ga verder met deze stappen:
- Klik bij SSH public keys op Add a public key.
- Vul bij Description
GitHub Actionin. - Plak bij Key de eerder gekopieerde publieke sleutel.
Service-instellingen openen
De private sleutel instellen
Ga nu naar GitHub en open de repository van uw project. Klik op Settings en selecteer Environments. Kies vervolgens New environment.
GitHub-omgevingen configureren
Voer "production" in bij Name en bevestig.
Omgeving instellen
Klik op de knop No restriction en kies vervolgens Selected branches and tags.
Omgevingsrestricties instellen
Klik nu op Add deployment branch or tag rule, vul "production" in bij Name pattern en klik op Add rule.
Omgevingsbranch instellen
Omgevingsbranch instellen
Klik bij Environment secrets op Add secret.
Secret toevoegen
Om de gegenereerde private sleutel op te halen, voert u uit:
cat /tmp/ssh_key
Gebruik in GitHub STACKHERO_SSH_PRIVATE_KEY als Name en plak uw private sleutel in het Value-veld.
De SSH private key secret instellen
Klik vervolgens bij Environment variables op Add variable.
Variabelen instellen
Voer STACKHERO_ENDPOINT in als Name en plak de endpoint van uw Node.js-service in het Value-veld. U vindt deze endpoint in uw Stackhero-dashboard.
De endpoint-variabele instellen
Als u een eigen domeinnaam voor uw service heeft ingesteld, gebruik dan uw eigen domein in plaats van <XXXXXX>.stackhero-network.com.
De gegenereerde sleutels verwijderen
Voor de veiligheid is het verstandig om de SSH-sleutels van uw computer te verwijderen nadat u ze heeft ingesteld op Stackhero en GitHub:
rm /tmp/ssh_key /tmp/ssh_key.pub
De GitHub Actions workflow configureren
Maak in uw Git-repository een .github/workflows-map aan als deze nog niet bestaat. Voeg vervolgens een bestand toe met de naam deploy-to-stackhero.yml:
# File: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Geef de branches op die de deployment-actie triggeren. Zorg dat er voor elke branch een environment in GitHub bestaat (onder "Settings" > "Environments").
# Voeg vervolgens de bijbehorende secret STACKHERO_SSH_PRIVATE_KEY en variabele STACKHERO_ENDPOINT toe aan die environment.
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 en STACKHERO_ENDPOINT moeten ingesteld zijn in de betreffende GitHub environment.
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Nadat u het workflowbestand heeft aangemaakt, kunt u uw wijzigingen committen met:
git add -A .
git commit -m "GitHub Actions toegevoegd voor deployment naar Stackhero"
Om een productiebranch aan te maken, voert u uit:
git checkout -b production
Push vervolgens uw wijzigingen naar GitHub:
git push --set-upstream origin production
Deze push stuurt uw code naar de production-branch en triggert GitHub Actions om uw code te deployen naar de Stackhero-service. Om de deployment te controleren, opent u uw project op GitHub en klikt u op Actions.
GitHub Actions die naar productie hebben gedeployed
Dat is alles. Uw code is nu ingesteld voor automatische deployment naar productie via GitHub Actions.
De staging-omgeving aanmaken
Het opzetten van de staging-omgeving verloopt vrijwel hetzelfde als voor productie. Herhaal simpelweg de bovenstaande stappen, waarbij u production vervangt door staging waar nodig.
Begin met het aanmaken van een staging-branch:
git checkout -b staging
Push vervolgens uw staging-branch naar GitHub:
git push --set-upstream origin staging
GitHub Actions zal automatisch uw staging-branch deployen naar de toegewezen Node.js-service.
Verder gaan
Het is verstandig om de production- en staging-branches te beschermen zodat directe pushes worden voorkomen. U kunt dan een pull request aanmaken naar de staging-branch en wijzigingen vanuit uw development-branch samenvoegen. Nadat u de wijzigingen op het staging-platform heeft gevalideerd, kunt u de pull request mergen naar de production-branch.
Met deze workflow zorgt u ervoor dat alleen geautoriseerde bijdragers kunnen pushen naar staging en productie, en voegt u een extra testlaag toe voordat nieuwe features live gaan.