Python: Déployer avec GitHub Actions
Comment déployer votre code Python en utilisant GitHub Actions
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution cloud Python prête à l'emploi offrant 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 Python de Stackhero !
GitHub Actions vous permet d'automatiser des tâches, comme le déploiement de votre code Python sur des serveurs de production.
Dans ce guide, vous apprendrez à utiliser GitHub Actions de manière sécurisée et fiable pour déployer votre code Python sur des environnements de staging et de production.
Pour cela, vous maintiendrez deux branches : staging et production. Le code poussé sur ces branches sera automatiquement déployé sur l'instance Stackhero correspondante.
Avoir une instance de staging n'est pas obligatoire. Vous pouvez suivre ce guide avec une seule instance de production. Cependant, pour garantir des déploiements fluides et être pleinement confiant lors du déploiement en production, il est fortement recommandé de maintenir à la fois une instance de staging et une instance de production. Cette pratique est un standard de l'industrie et une approche judicieuse qui peut vous aider à éviter de nombreux problèmes.
Avant de commencer, assurez-vous de disposer d'un compte GitHub avec un dépôt hébergeant votre code.
Création des services Python
Rendez-vous sur 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 renommer ces services en "Production" et "Staging".
Vous n'avez pas encore de compte Stackhero ? Vous pouvez vous inscrire en seulement deux minutes gratuitement et ensuite créer vos services cloud Python en quelques clics.
Exemple de services de production et de staging
Configurer les clés SSH
Les clés SSH permettent à GitHub Actions de se connecter en toute sécurité à votre service Python pour le déploiement du code. Cette étape est essentielle pour protéger vos services Stackhero.
Sur votre ordinateur, générez de nouvelles clés SSH en exécutant :
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Définir la clé publique
Tout d'abord, récupérez la clé publique que vous venez de générer :
cat /tmp/ssh_key.pub
Ensuite, dans le tableau de bord Stackhero, sélectionnez votre service Python "production" et cliquez sur le bouton "Configurer".
Obtenir les paramètres du service
Suivez ces étapes :
- Dans
Clés publiques SSH, cliquez surAjouter une clé publique. - Dans
Description, entrezGitHub Action. - Dans
Clé, collez la clé publique que vous avez copiée depuis votre ordinateur.
Ajouter une clé publique
Définir la clé privée
Accédez à la page de votre projet GitHub et cliquez sur Settings, puis sur Environments. Sélectionnez New environment.
Configurer les environnements GitHub
Dans le champ Name, tapez "production" et confirmez.
Définir l'environnement
Cliquez sur le bouton No restriction et choisissez Selected branches and tags.
Définir les restrictions d'environnement
Ensuite, cliquez sur Add deployment branch or tag rule, entrez "production" dans le champ Name pattern, et cliquez sur Add rule.
Définir la branche d'environnement
Définir la branche d'environnement
Dans la section Environment secrets, cliquez sur Add secret.
Ajouter un secret
Maintenant, récupérez la clé privée que vous avez générée précédemment :
cat /tmp/ssh_key
Dans la configuration du secret, utilisez STACKHERO_SSH_PRIVATE_KEY comme Nom et collez la clé privée comme Valeur.
Définir le secret de la clé privée SSH
Ensuite, dans la section Environment variables, cliquez sur Add variable.
Définir les variables
Entrez STACKHERO_ENDPOINT comme Nom et collez votre endpoint de service Python comme Valeur. Vous pouvez trouver cet endpoint dans votre tableau de bord Stackhero.
Définir la variable d'endpoint
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 car vous n'en aurez plus besoin :
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 s'il n'existe pas déjà. Ensuite, créez un fichier nommé deploy-to-stackhero.yml dans ce répertoire.
# 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éclencheront l'action de déploiement suite à un push git.
# N'oubliez pas de créer un environnement correspondant au nom de la branche dans GitHub (dans "Settings"/"Environments").
# Puis 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:
# Le secret "STACKHERO_SSH_PRIVATE_KEY" et la variable "STACKHERO_ENDPOINT" doivent être définis dans l'environnement de branche correspondant sur GitHub sous "Settings"/"Environments".
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Validez ces modifications en exécutant :
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Ensuite, créez une branche de production :
git checkout -b production
Enfin, poussez vos modifications sur GitHub :
git push --set-upstream origin production
Cette commande pousse votre code sur la branche production de GitHub et déclenche GitHub Actions pour déployer le code sur votre instance Stackhero.
Pour vérifier le déploiement, rendez-vous sur la page du projet GitHub et cliquez sur Actions.
GitHub Actions ayant déployé en production
Félicitations, vous pouvez maintenant déployer automatiquement votre code en production en utilisant GitHub Actions !
Création de l'environnement de staging
Configurer l'environnement de staging est très similaire à la configuration de l'environnement de production. Répétez simplement les étapes ci-dessus en remplaçant production par staging.
Après avoir configuré l'environnement, créez une branche de staging :
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 l'instance Python désignée pour le staging.
Aller plus loin
Il est recommandé de protéger les branches production et staging pour empêcher les pushs directs. Avec cette configuration, des pull requests doivent être créées pour la branche staging et fusionnées par des membres de l'équipe ayant les droits appropriés. Une fois validées sur la plateforme de staging, les pull requests peuvent être fusionnées dans la branche production par les mêmes personnes autorisées.
Cette approche améliore la sécurité en garantissant que seuls les changements approuvés sont déployés et améliore la fiabilité en testant les nouvelles fonctionnalités sur la plateforme de staging avant qu'elles n'atteignent la production.