PHP: Déployer avec GitHub Actions
Comment déployer votre code PHP en utilisant GitHub Actions
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution PHP 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 PHP cloud hosting de Stackhero !
GitHub Actions facilite l'automatisation de tâches telles que le déploiement de votre code PHP sur des serveurs de production. Dans ce guide, vous apprendrez à déployer en toute sécurité votre application PHP sur des environnements de staging et de production en utilisant GitHub Actions.
L'approche consiste à maintenir deux branches, staging et production. Le code poussé sur ces branches est automatiquement déployé sur l'instance Stackhero correspondante.
Avoir une instance de staging n'est pas obligatoire. Cependant, l'utilisation d'instances de staging et de production est fortement recommandée pour garantir des déploiements fluides et une plus grande confiance lors des déploiements en production. Cette pratique est conforme aux standards de l'industrie et aide à prévenir les problèmes potentiels.
Pour suivre ce guide, vous avez besoin d'un compte GitHub hébergeant votre dépôt de code PHP.
Création des services PHP
Commencez par vous connecter à votre tableau de bord Stackhero et créez deux services PHP : un pour le staging et un pour la production. Pour rester organisé, renommez ces services en "Production" et "Staging".
Si vous n'avez pas de compte Stackhero, vous pouvez en créer un gratuitement en seulement deux minutes et configurer vos services cloud PHP en quelques clics.
Exemple de services de production et de staging
Configurer les clés SSH
Les clés SSH sont essentielles pour permettre à GitHub Actions de se connecter en toute sécurité à votre service PHP pour le déploiement. Dans ce guide, vous allez créer une paire de clés SSH unique dédiée à cet usage.
Générer des clés SSH
Vous pouvez générer de nouvelles clés SSH en exécutant la commande suivante sur votre ordinateur :
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Définir la clé publique
Récupérez la clé publique en exécutant :
cat /tmp/ssh_key.pub
Ensuite, accédez à votre tableau de bord Stackhero. Sélectionnez votre service PHP "Production" et cliquez sur "Configurer". Puis suivez ces étapes :
- Sous
Clés publiques SSH, cliquez sur "Ajouter une clé publique". - Définissez la
Descriptionsur "GitHub Action". - Collez la clé publique récupérée dans le champ
Clé.
Obtenir les paramètres du service
Définir la clé privée
Maintenant, ouvrez votre projet GitHub et suivez ces étapes pour configurer la clé privée pour le déploiement :
-
Cliquez sur
Settings, puisEnvironmentset sélectionnezNew environment.
Configurer les environnements GitHub -
Dans le champ
Name, entrez "production" et confirmez.
Définir l'environnement -
Cliquez sur le bouton
No restrictionet sélectionnezSelected branches and tags.
Définir les restrictions d'environnement -
Cliquez sur
Add deployment branch or tag rule, entrez "production" dans le champName pattern, et cliquez surAdd rule.
Définir la branche d'environnement
Définir la branche d'environnement -
Sous
Environment secrets, cliquez surAdd secret.
Ajouter un secret
Récupérez la clé privée que vous avez générée précédemment en exécutant :
cat /tmp/ssh_key
Dans les paramètres d'environnement GitHub :
-
Dans
Name, entrezSTACKHERO_SSH_PRIVATE_KEYet collez votre clé privée dans le champValue.
Définir le secret de la clé privée SSH -
Dans la section
Environment variables, cliquez surAdd variable.
Définir les variables -
Dans
Name, entrezSTACKHERO_ENDPOINTet collez l'endpoint du service PHP dans le champValue. 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é, vous devez maintenant supprimer les clés SSH générées de votre ordinateur :
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurer le workflow GitHub Actions
Ensuite, vous allez configurer un workflow GitHub Actions pour automatiser vos déploiements. Dans votre dépôt Git, créez un répertoire nommé .github/workflows et ajoutez un fichier nommé deploy-to-stackhero.yml avec le contenu suivant :
# 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 dans GitHub (sous "Settings" -> "Environments") pour chaque branche
# Puis ajoutez le secret "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 GitHub correspondant (sous "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Après avoir ajouté le fichier, validez vos modifications en exécutant les commandes suivantes dans votre terminal :
git add -A .
git commit -m "Ajout de GitHub Actions pour déployer sur Stackhero"
Ensuite, créez une branche de production en exécutant :
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. GitHub Actions s'exécute alors automatiquement et déploie votre code sur l'instance Stackhero associée. Pour vérifier le déploiement, visitez votre projet GitHub et cliquez sur Actions.
GitHub Actions ayant déployé en production
Félicitations, vous êtes maintenant prêt à déployer automatiquement votre code en production en utilisant GitHub Actions !
Création de l'environnement de staging
Vous pouvez configurer l'environnement de staging en suivant un processus similaire à celui de l'environnement de production. Répétez simplement les étapes ci-dessus en remplaçant production par staging lorsque cela est applicable.
Une fois les paramètres configurés, créez une branche de staging en exécutant :
git checkout -b staging
Ensuite, poussez vos modifications sur GitHub :
git push --set-upstream origin staging
GitHub Actions déploie automatiquement le code de la branche staging sur le service PHP désigné pour le staging.
Aller plus loin
Il est recommandé de protéger les branches production et staging pour éviter les pushs directs. Vous pourriez envisager de créer une pull request pour la branche staging qui est examinée et fusionnée uniquement par des personnes ayant les droits de déploiement. Une fois les modifications validées dans l'environnement de staging, les utilisateurs autorisés peuvent fusionner la pull request dans la branche production.
Suivre cette approche augmente la sécurité en garantissant que seules les modifications approuvées sont déployées et améliore la fiabilité en testant les nouvelles fonctionnalités dans un environnement de staging avant qu'elles n'atteignent la production.