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.
Création des services Node.js
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.js
Configurer les clés SSH
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 ""
Configurer la clé publique
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 service
Ensuite :
- Dans Clés publiques SSH, cliquez sur Ajouter une clé publique.
- Pour Description, entrez
GitHub Action. - Pour Clé, collez la clé publique que vous avez récupérée.
Obtenir les paramètres du service
Configurer la clé privée
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 GitHub
Entrez "production" pour le Nom et confirmez votre action.
Configurer l'environnement
Cliquez sur le bouton No restriction, puis choisissez Selected branches and tags.
Configurer 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'environnement
Configurer la branche d'environnement
Ensuite, dans Environment secrets, cliquez sur Add secret.
Ajouter 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 SSH
Ensuite, dans Environment variables, cliquez sur Add variable.
Configurer 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 terminaison
Si vous avez personnalisé le nom de domaine de votre service, utilisez la version personnalisée au lieu de xxxxxx.stackhero-network.com.
Supprimer les clés générées
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
Configurer le workflow GitHub Actions
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 production
Félicitations ! Votre code est maintenant configuré pour un déploiement automatique en production via GitHub Actions.
Création de l'environnement de staging
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é.
Aller plus loin
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.