Node.js: Déployer avec GitHub Actions

Apprenez comment déployer votre code Node.js à l'aide de GitHub Actions

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Node.js cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Déployez votre application en quelques secondes avec un simple git push.
  • Utilisez votre propre nom de domaine et bénéficiez de la configuration automatique des certificats HTTPS pour une sécurité renforcée.
  • Profitez de la tranquillité d'esprit avec des sauvegardes automatiques, des mises à jour en un clic, et une tarification simple, transparente et prévisible.
  • Obtenez des performances optimales et une sécurité robuste grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il ne faut que 5 minutes pour essayer la solution d'hébergement cloud Node.js de Stackhero !

GitHub Actions facilite l'automatisation de tâches telles que le déploiement de votre code Node.js sur des serveurs de production. Dans ce guide, nous allons vous montrer comment déployer de façon sécuritaire et fiable votre application Node.js vers des environnements de staging et de production en utilisant GitHub Actions.

Nous vous recommandons de maintenir deux branches : staging et production. Lorsque vous poussez du code sur l'une ou l'autre de ces branches, vos modifications sont automatiquement déployées sur le service Stackhero correspondant.

Disposer d'une instance de staging est optionnel. Vous pouvez suivre ce guide en utilisant uniquement une instance de production. Pour faciliter les déploiements et renforcer la confiance avant la mise en ligne, il est fortement recommandé de maintenir à la fois des environnements de staging et de production. Cette approche est largement adoptée dans l'industrie et aide à prévenir les problèmes courants de déploiement.

Avant de commencer, assurez-vous d'avoir un compte GitHub et un dépôt hébergeant votre code Node.js.

Commencez par vous connecter à votre tableau de bord Stackhero et créez deux services Stackhero : un pour le staging et un pour la production. Pour plus de clarté, vous pouvez nommer ces services « Staging » et « Production ».

Si vous n'avez pas encore de compte Stackhero, vous pouvez en créer un gratuitement en deux minutes et configurer vos services cloud Node.js en quelques clics.

Exemple de services Node.jsExemple de services Node.js

Les clés SSH permettent à GitHub Actions de se connecter de façon sécurisée à votre service Node.js lors du déploiement de votre code. Il s'agit d'une étape cruciale pour protéger vos services Stackhero.

Sur votre ordinateur, vous pouvez générer de nouvelles clés SSH avec :

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

Pour afficher la clé publique que vous venez de créer, exécutez :

cat /tmp/ssh_key.pub

Ensuite, dans votre tableau de bord Stackhero, sélectionnez votre service Node.js de production et cliquez sur le bouton Configurer.

Accéder aux paramètres du serviceAccéder aux paramètres du service

Poursuivez avec ces étapes :

  1. Dans Clés publiques SSH, cliquez sur Ajouter une clé publique.
  2. Pour Description, saisissez GitHub Action.
  3. Pour Clé, collez la clé publique copiée précédemment.

Accéder aux paramètres du serviceAccéder aux paramètres du service

Passez maintenant sur GitHub et ouvrez le dépôt de votre projet. Cliquez sur Settings, puis sélectionnez Environments. Choisissez New environment.

Configuration des environnements GitHubConfiguration des environnements GitHub

Entrez « production » pour le Name et confirmez.

Définir l'environnementDéfinir l'environnement

Cliquez sur le bouton No restriction, puis choisissez Selected branches and tags.

Définir les restrictions d'environnementDéfinir les restrictions d'environnement

Cliquez ensuite sur Add deployment branch or tag rule, saisissez « production » dans le champ Name pattern, puis cliquez sur Add rule.

Définir la branche d'environnementDéfinir la branche d'environnement

Définir la branche d'environnementDéfinir la branche d'environnement

Dans Environment secrets, cliquez sur Add secret.

Ajouter un secretAjouter un secret

Pour récupérer la clé privée que vous avez générée, exécutez :

cat /tmp/ssh_key

Sur GitHub, utilisez STACKHERO_SSH_PRIVATE_KEY comme Name et collez votre clé privée dans le champ Value.

Définir le secret de la clé privée SSHDéfinir le secret de la clé privée SSH

Ensuite, dans Environment variables, cliquez sur Add variable.

Définir les variablesDéfinir les variables

Entrez STACKHERO_ENDPOINT comme Name et collez l'endpoint de votre service Node.js dans le champ Value. Vous trouverez cet endpoint dans votre tableau de bord Stackhero.

Définir la variable endpointDéfinir la variable endpoint

Si vous avez configuré un nom de domaine personnalisé pour votre service, utilisez votre domaine personnalisé à la place de <XXXXXX>.stackhero-network.com.

Pour des raisons de sécurité, il est recommandé de supprimer les clés SSH de votre ordinateur une fois qu'elles ont été ajoutées sur Stackhero et GitHub :

rm /tmp/ssh_key /tmp/ssh_key.pub

Dans votre dépôt Git, créez un dossier .github/workflows s'il n'existe pas déjà. Ajoutez ensuite un fichier nommé 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:
    # Listez les branches qui déclenchent l'action de déploiement. Assurez-vous qu'un environnement existe dans GitHub (sous "Settings" > "Environments") pour chaque branche.
    # Ajoutez ensuite le secret STACKHERO_SSH_PRIVATE_KEY et la variable STACKHERO_ENDPOINT correspondants dans cet environnement.
    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 et STACKHERO_ENDPOINT doivent être définis dans l'environnement GitHub correspondant.
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Une fois le fichier de workflow créé, vous pouvez valider vos modifications ainsi :

git add -A .
git commit -m "Ajout de GitHub Actions pour déployer sur Stackhero"

Pour créer une branche de production, exécutez :

git checkout -b production

Puis poussez vos modifications sur GitHub :

git push --set-upstream origin production

Ce push envoie votre code sur la branche production et déclenche GitHub Actions pour déployer votre code sur le service Stackhero. Pour confirmer le déploiement, ouvrez votre projet sur GitHub et cliquez sur Actions.

GitHub Actions ayant déployé en productionGitHub Actions ayant déployé en production

Voilà, votre code est maintenant configuré pour un déploiement automatique en production via GitHub Actions.

La configuration de l'environnement de staging est presque identique à celle de la production. Il suffit de répéter les étapes ci-dessus en remplaçant production par staging lorsque nécessaire.

Commencez par créer une branche de staging :

git checkout -b staging

Puis poussez votre branche de staging sur GitHub :

git push --set-upstream origin staging

GitHub Actions déploiera automatiquement votre branche staging sur le service Node.js dédié.

Il est recommandé de protéger les branches production et staging pour éviter les pushs directs. Vous pouvez plutôt créer une pull request vers la branche de staging et fusionner les changements depuis votre branche de développement. Une fois les modifications validées sur la plateforme de staging, fusionnez la pull request dans la branche production.

Ce workflow permet de s'assurer que seuls les contributeurs autorisés peuvent pousser sur les branches de staging et de production, et il ajoute une étape supplémentaire de validation avant la mise en ligne de nouvelles fonctionnalités.