Node.js: Déployer avec GitHub Actions

Apprenez à déployer votre code Node.js en utilisant 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 vous permet d'automatiser des tâches comme le déploiement de votre code Node.js sur des serveurs de production. Dans ce guide, nous vous expliquerons comment déployer de manière sécurisée et fiable votre application Node.js sur des environnements de staging et de production en utilisant GitHub Actions.

Nous recommandons de maintenir deux branches : staging et production. Lorsque du code est poussé sur ces branches, il est automatiquement déployé sur le service Stackhero correspondant.

Avoir une instance de staging n'est pas obligatoire. Vous pouvez suivre ce guide avec seulement une instance de production. Cependant, pour garantir des déploiements fluides et gagner en confiance avant de passer en production, il est fortement recommandé de maintenir à la fois des environnements de staging et de production. Cette approche est une norme de l'industrie qui peut aider à prévenir les problèmes courants de déploiement.

Avant de commencer, assurez-vous de disposer d'un compte GitHub avec un dépôt hébergeant votre code.

Tout d'abord, connectez-vous à 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".

Vous n'avez pas encore de compte Stackhero ? Vous pouvez en créer un en seulement deux minutes gratuitement 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 en toute sécurité à votre service Node.js lors du déploiement de votre code. Cette étape est essentielle pour protéger vos services Stackhero.

Sur votre ordinateur, générez de nouvelles clés SSH avec cette commande :

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

Récupérez la clé publique que vous venez de générer en exécutant :

cat /tmp/ssh_key.pub

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

Obtenir les paramètres du serviceObtenir les paramètres du service

Ensuite :

  1. Dans Clés publiques SSH, cliquez sur Ajouter une clé publique.
  2. Pour Description, entrez GitHub Action.
  3. Pour Clé, collez la clé publique que vous avez récupérée.

Obtenir les paramètres du serviceObtenir les paramètres du service

Accédez au site GitHub et ouvrez le dépôt de votre projet. Ensuite, cliquez sur Settings et sélectionnez Environments. Cliquez sur New environment.

Configurer les environnements GitHubConfigurer les environnements GitHub

Entrez "production" pour le Nom et confirmez votre action.

Configurer l'environnementConfigurer l'environnement

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

Configurer les restrictions d'environnementConfigurer les restrictions d'environnement

Cliquez maintenant sur Add deployment branch or tag rule, entrez "production" dans le champ Name pattern, et cliquez sur Add rule.

Configurer la branche d'environnementConfigurer la branche d'environnement

Configurer la branche d'environnementConfigurer la branche d'environnement

Ensuite, dans Environment secrets, cliquez sur Add secret.

Ajouter un secretAjouter un secret

Récupérez la clé privée que vous avez générée en exécutant :

cat /tmp/ssh_key

Dans GitHub, entrez STACKHERO_SSH_PRIVATE_KEY comme Nom et collez votre clé privée dans le champ Valeur.

Configurer le secret de la clé privée SSHConfigurer le secret de la clé privée SSH

Ensuite, dans Environment variables, cliquez sur Add variable.

Configurer les variablesConfigurer les variables

Entrez STACKHERO_ENDPOINT comme Nom et collez votre point de terminaison de service Node.js dans le champ Valeur. Vous pouvez trouver ce point de terminaison dans votre tableau de bord Stackhero.

Configurer la variable de point de terminaisonConfigurer la variable de point de terminaison

Si vous avez personnalisé le nom de domaine de votre service, utilisez la version personnalisée au lieu de xxxxxx.stackhero-network.com.

Pour des raisons de sécurité, supprimez les clés SSH de votre ordinateur une fois que vous les avez configurées sur Stackhero et GitHub :

rm /tmp/ssh_key /tmp/ssh_key.pub

Dans votre dépôt Git, créez un répertoire nommé .github/workflows et ajoutez un fichier nommé deploy-to-stackhero.yml.

# Fichier : .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Liste des branches qui déclenchent l'action de déploiement. Assurez-vous qu'un environnement existe dans GitHub (sous "Settings" > "Environments") pour chaque branche.
    # Ensuite, ajoutez le secret correspondant STACKHERO_SSH_PRIVATE_KEY et la variable STACKHERO_ENDPOINT 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 }}

Après avoir créé le fichier de workflow, validez vos modifications avec les commandes suivantes :

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

Créez une branche de production avec :

git checkout -b production

Enfin, 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 vérifier le déploiement, accédez à votre projet sur GitHub et cliquez sur Actions.

GitHub Actions qui a déployé en productionGitHub Actions qui a déployé en production

Félicitations ! Votre code est maintenant configuré pour un déploiement automatique en production via GitHub Actions.

La configuration de l'environnement de staging est similaire à celle de l'environnement de production. Répétez les étapes ci-dessus, en remplaçant production par staging si nécessaire.

Commencez par créer une branche de staging avec :

git checkout -b staging

Ensuite, poussez votre branche de staging sur GitHub :

git push --set-upstream origin staging

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

Il est recommandé de protéger les branches production et staging pour éviter les pushs directs. Créez plutôt une pull request pour la branche de staging et fusionnez les modifications depuis votre branche de développement. Une fois que vous avez validé les modifications sur la plateforme de staging, fusionnez la pull request dans la branche production.

Cette approche permet de s'assurer que seules les personnes autorisées peuvent pousser sur staging et production. Elle garantit également que les nouvelles fonctionnalités sont soigneusement testées avant leur mise en production.