PHP: Déployer avec GitHub Actions
Comment déployer votre code PHP à l'aide de 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 est un outil puissant qui vous permet d'automatiser vos workflows, y compris le déploiement de votre code PHP directement sur vos serveurs de production. Dans ce guide, nous allons vous expliquer comment déployer de façon sécuritaire votre application PHP sur des environnements de staging et de production à l'aide de GitHub Actions.
L'approche recommandée consiste à maintenir deux branches dans votre dépôt : staging et production. Chaque fois que vous poussez du code sur l'une de ces branches, il sera automatiquement déployé sur l'instance Stackhero correspondante.
Disposer d'une instance de staging n'est pas obligatoire. Cependant, il est fortement recommandé d'utiliser à la fois des instances de staging et de production afin d'assurer des déploiements sans accroc et d'augmenter la confiance lors des mises en production. Cette pratique est conforme aux standards de l'industrie et aide à prévenir d'éventuels problèmes.
Pour commencer, vous aurez besoin d'un compte GitHub avec votre code PHP hébergé dans un dépôt.
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 plus de clarté, vous pouvez renommer ces services « Production » et « Staging ».
Si vous n'avez pas encore de compte Stackhero, vous pouvez en créer un gratuitement en deux minutes et mettre en place vos services cloud PHP en quelques clics.
Exemple de services production et staging
Configurer les clés SSH
Les clés SSH sont la méthode recommandée pour permettre à GitHub Actions de se connecter de façon sécuritaire à votre service PHP lors du déploiement. Dans ce guide, vous allez créer une paire de clés SSH dédiée à cet usage.
Générer les clés SSH
Pour générer de nouvelles clés SSH, exécutez cette commande sur votre ordinateur :
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Ajouter la clé publique
Ensuite, récupérez la clé publique en exécutant :
cat /tmp/ssh_key.pub
Rendez-vous sur votre tableau de bord Stackhero et sélectionnez votre service PHP « Production ». Cliquez sur « Configurer » et suivez ces étapes :
- Sous
SSH public keys, cliquez sur « Add a public key ». - Indiquez « GitHub Action » dans le champ
Description. - Collez la clé publique que vous venez de récupérer dans le champ
Key.
Accéder aux paramètres du service
Ajouter la clé privée
Ajoutez maintenant la clé privée à votre projet GitHub afin qu'elle soit utilisée lors du déploiement :
-
Allez dans
Settings, puis sélectionnezEnvironmentset cliquez surNew environment.
Configuration des environnements GitHub -
Dans le champ
Name, saisissez « production » et confirmez.
Définir l'environnement -
Cliquez sur le bouton
No restrictionpuis sélectionnezSelected branches and tags.
Définir les restrictions d'environnement -
Cliquez sur
Add deployment branch or tag rule, saisissez « production » dans le champName patternet cliquez surAdd rule.
Définir la branche de l'environnement
Définir la branche de l'environnement -
Dans la section
Environment secrets, cliquez surAdd secret.
Ajouter un secret
Récupérez la clé privée générée précédemment en exécutant :
cat /tmp/ssh_key
Dans les paramètres d'environnement GitHub :
-
Pour
Name, saisissezSTACKHERO_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 -
Pour
Name, saisissezSTACKHERO_ENDPOINTet collez l'endpoint de votre service PHP dans le champValue. Vous trouverez cet endpoint dans votre tableau de bord Stackhero.
Définir la variable endpoint
Si vous avez personnalisé le nom de domaine de votre service, utilisez la version personnalisée à la place de <XXXXXX>.stackhero-network.com.
Supprimer les clés générées
Pour des raisons de sécurité, il est recommandé de supprimer les clés SSH générées de votre ordinateur après la configuration :
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurer le workflow GitHub Actions
Vous allez maintenant mettre en place un fichier de workflow GitHub Actions pour automatiser vos déploiements. Dans votre dépôt Git, créez un dossier .github/workflows et ajoutez un fichier nommé deploy-to-stackhero.yml avec le contenu suivant :
# File: .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 lors d'un git push
# 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 }}
Une fois ce fichier ajouté, vous pouvez valider vos modifications avec ces commandes dans votre terminal :
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Pour créer la branche production, vous pouvez exécuter :
git checkout -b production
Puis poussez vos modifications sur GitHub :
git push --set-upstream origin production
Cela va pousser votre code sur la branche production de GitHub. GitHub Actions va alors automatiquement s'exécuter et déployer votre code sur l'instance Stackhero associée. Pour vérifier le statut du déploiement, rendez-vous sur votre projet GitHub et cliquez sur Actions.
GitHub Actions ayant déployé en production
Félicitations ! Votre projet est maintenant configuré pour un déploiement automatique en production à l'aide de GitHub Actions.
Création de l'environnement de staging
Vous pouvez configurer votre environnement de staging de la même façon que l'environnement de production. Il suffit de répéter les étapes ci-dessus en remplaçant « production » par « staging » là où c'est nécessaire.
Une fois la configuration terminée, créez votre branche staging comme ceci :
git checkout -b staging
Puis poussez-la sur GitHub :
git push --set-upstream origin staging
GitHub Actions déploiera automatiquement le code de votre branche staging sur le service PHP que vous avez configuré pour le staging.
Pour aller plus loin
Pour assurer la fiabilité et la sécurité de votre application, il est recommandé de protéger vos branches production et staging contre les pushs directs. Vous pouvez par exemple exiger que les modifications passent par des pull requests, en prévoyant que la branche staging soit relue et fusionnée uniquement par les personnes autorisées à déployer. Une fois vos changements validés en staging, les utilisateurs autorisés pourront les fusionner dans la branche production.
Cette approche garantit que seul du code validé arrive en production, et vous permet de tester les nouvelles fonctionnalités en staging avant leur mise en ligne, ce qui vous apporte, à vous et à votre équipe, une tranquillité d'esprit supplémentaire.