Node.js: Distribuire con GitHub Actions

Scopri come distribuire il tuo codice Node.js utilizzando GitHub Actions

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una soluzione Node.js cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:

  • Distribuisci la tua applicazione in pochi secondi con un semplice git push.
  • Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza potenziata.
  • Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
  • Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.

Risparmia tempo e semplificati la vita: bastano solo 5 minuti per provare la soluzione di hosting cloud Node.js di Stackhero!

GitHub Actions ti consente di automatizzare attività come la distribuzione del tuo codice Node.js su server di produzione. In questa guida, ti guideremo attraverso la distribuzione sicura e affidabile della tua applicazione Node.js su ambienti di staging e produzione utilizzando GitHub Actions.

Consigliamo di mantenere due branch: staging e production. Quando il codice viene inviato a questi branch, viene automaticamente distribuito al servizio Stackhero corrispondente.

Avere un'istanza di staging non è obbligatorio. Puoi seguire questa guida con solo un'istanza di produzione. Tuttavia, per garantire distribuzioni fluide e acquisire fiducia prima di andare in produzione, è altamente consigliato mantenere sia ambienti di staging che di produzione. Questo approccio è uno standard del settore che può aiutare a prevenire problemi comuni di distribuzione.

Prima di iniziare, assicurati di avere un account GitHub con un repository che ospita il tuo codice.

Per prima cosa, accedi alla tua dashboard Stackhero e crea due servizi Stackhero: uno per lo staging e uno per la produzione. Per chiarezza, puoi nominare questi servizi "Staging" e "Production".

Non hai ancora un account Stackhero? Puoi crearne uno in soli due minuti gratuitamente e configurare i tuoi servizi cloud Node.js in pochi clic.

Esempio di servizi Node.jsEsempio di servizi Node.js

Le chiavi SSH consentono a GitHub Actions di connettersi in modo sicuro al tuo servizio Node.js durante la distribuzione del tuo codice. Questo passaggio è essenziale per proteggere i tuoi servizi Stackhero.

Sul tuo computer, genera nuove chiavi SSH con questo comando:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

Recupera la chiave pubblica appena generata eseguendo:

cat /tmp/ssh_key.pub

Quindi, nella dashboard Stackhero, seleziona il tuo servizio Node.js di produzione e fai clic sul pulsante Configura.

Ottieni impostazioni del servizioOttieni impostazioni del servizio

Successivamente:

  1. In Chiavi pubbliche SSH, fai clic su Aggiungi una chiave pubblica.
  2. Per Descrizione, inserisci GitHub Action.
  3. Per Chiave, incolla la chiave pubblica che hai recuperato.

Ottieni impostazioni del servizioOttieni impostazioni del servizio

Passa al sito GitHub e apri il repository del tuo progetto. Quindi, fai clic su Settings e seleziona Environments. Fai clic su New environment.

Configurazione degli ambienti GitHubConfigurazione degli ambienti GitHub

Inserisci "production" per il Nome e conferma la tua azione.

Impostazione dell'ambienteImpostazione dell'ambiente

Fai clic sul pulsante No restriction, quindi scegli Selected branches and tags.

Impostazione delle restrizioni dell'ambienteImpostazione delle restrizioni dell'ambiente

Ora fai clic su Add deployment branch or tag rule, inserisci "production" nel campo Name pattern e fai clic su Add rule.

Impostazione del branch dell'ambienteImpostazione del branch dell'ambiente

Impostazione del branch dell'ambienteImpostazione del branch dell'ambiente

Successivamente, in Environment secrets, fai clic su Add secret.

Aggiungi segretoAggiungi segreto

Recupera la chiave privata che hai generato eseguendo:

cat /tmp/ssh_key

In GitHub, inserisci STACKHERO_SSH_PRIVATE_KEY come Nome e incolla la tua chiave privata nel campo Valore.

Impostazione del segreto della chiave privata SSHImpostazione del segreto della chiave privata SSH

Quindi, in Environment variables, fai clic su Add variable.

Impostazione delle variabiliImpostazione delle variabili

Inserisci STACKHERO_ENDPOINT come Nome e incolla il tuo endpoint del servizio Node.js nel campo Valore. Puoi trovare questo endpoint nella tua dashboard Stackhero.

Impostazione della variabile endpointImpostazione della variabile endpoint

Se hai personalizzato il nome di dominio del tuo servizio, usa la versione personalizzata invece di xxxxxx.stackhero-network.com.

Per motivi di sicurezza, rimuovi le chiavi SSH dal tuo computer una volta che le hai configurate su Stackhero e GitHub:

rm /tmp/ssh_key /tmp/ssh_key.pub

All'interno del tuo repository Git, crea una directory chiamata .github/workflows e aggiungi un file chiamato 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:
    # Elenca i branch che attivano l'azione di distribuzione. Assicurati che esista un ambiente in GitHub (sotto "Settings" > "Environments") per ogni branch.
    # Quindi aggiungi il segreto corrispondente STACKHERO_SSH_PRIVATE_KEY e la variabile STACKHERO_ENDPOINT in quell'ambiente.
    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 e STACKHERO_ENDPOINT devono essere impostati nell'ambiente GitHub corrispondente.
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Dopo aver creato il file del workflow, conferma le tue modifiche con i seguenti comandi:

git add -A .
git commit -m "Aggiungi GitHub Actions per distribuire su Stackhero"

Crea un branch di produzione con:

git checkout -b production

Infine, invia le tue modifiche a GitHub:

git push --set-upstream origin production

Questo push invia il tuo codice al branch production e attiva GitHub Actions per distribuire il tuo codice al servizio Stackhero. Per verificare la distribuzione, vai al tuo progetto su GitHub e fai clic su Actions.

GitHub Actions che ha distribuito in produzioneGitHub Actions che ha distribuito in produzione

Congratulazioni! Il tuo codice è ora configurato per la distribuzione automatica in produzione tramite GitHub Actions.

La configurazione dell'ambiente di staging è simile a quella dell'ambiente di produzione. Ripeti i passaggi sopra, sostituendo production con staging se necessario.

Inizia creando un branch di staging con:

git checkout -b staging

Quindi invia il tuo branch di staging a GitHub:

git push --set-upstream origin staging

GitHub Actions distribuirà automaticamente il tuo branch di staging al servizio Node.js designato.

È buona pratica proteggere i branch production e staging per evitare push diretti. Invece, crea una pull request per il branch di staging e unisci le modifiche dal tuo branch di sviluppo. Una volta che hai convalidato le modifiche sulla piattaforma di staging, unisci la pull request nel branch production.

Questo approccio aiuta a garantire che solo le persone autorizzate possano inviare a staging e produzione. Garantisce inoltre che le nuove funzionalità siano accuratamente testate prima di andare in produzione.