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.

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-servicesVoorbeeld van Node.js-services

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

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 openenService-instellingen openen

Ga verder met deze stappen:

  1. Klik bij SSH public keys op Add a public key.
  2. Vul bij Description GitHub Action in.
  3. Plak bij Key de eerder gekopieerde publieke sleutel.

Service-instellingen openenService-instellingen openen

Ga nu naar GitHub en open de repository van uw project. Klik op Settings en selecteer Environments. Kies vervolgens New environment.

GitHub-omgevingen configurerenGitHub-omgevingen configureren

Voer "production" in bij Name en bevestig.

Omgeving instellenOmgeving instellen

Klik op de knop No restriction en kies vervolgens Selected branches and tags.

Omgevingsrestricties instellenOmgevingsrestricties instellen

Klik nu op Add deployment branch or tag rule, vul "production" in bij Name pattern en klik op Add rule.

Omgevingsbranch instellenOmgevingsbranch instellen

Omgevingsbranch instellenOmgevingsbranch instellen

Klik bij Environment secrets op Add secret.

Secret toevoegenSecret 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 instellenDe SSH private key secret instellen

Klik vervolgens bij Environment variables op Add variable.

Variabelen instellenVariabelen 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 instellenDe 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.

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

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 gedeployedGitHub Actions die naar productie hebben gedeployed

Dat is alles. Uw code is nu ingesteld voor automatische deployment naar productie via GitHub Actions.

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.

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.