Automatiser le déploiement WP avec GitHub Actions et Staging

Comment automatiser le déploiement WordPress avec GitHub Actions et Staging

Introduction

Automatiser le déploiement d’un site WordPress peut transformer votre flux de travail. Au lieu de faire des modifications manuelles à chaque mise à jour, vous pouvez configurer un système simple et sécurisé qui déploie automatiquement vos changements sur un environnement de test (staging) puis sur votre site en production. Ce guide complet vous montre comment mettre en place un workflow CI/CD efficace avec GitHub Actions, SSH sécurisé, et un processus clair pour développer localement et publier sans erreurs.

Retrouvez d’autres accessoires utiles dans la catégorie sur DiGiProUnic.

Pourquoi utiliser un workflow CI/CD pour WordPress

La gestion manuelle d’un site WordPress comporte des risques : erreurs humaines, fichiers oubliés, downtime et incompatibilités. Un workflow CI/CD (Continuous Integration / Continuous Deployment) apporte :

  • Sécurité : déploiement via SSH, pas de FTP public
  • Rapidité : pushes automatiques vers staging et production
  • Fiabilité : tests sur staging avant mise en ligne
  • Scalabilité : ajoutez facilement des builds npm ou des plugins à l’avenir
Comment automatiser le déploiement WordPress avec GitHub Actions et Staging

Étape 1 : Préparer votre environnement local

Commencez par créer un clone de votre site live sur votre environnement local XAMPP. Exportez le site avec un plugin comme All-in-One WP Migration :

  • URL local : http://localhost/monsitelocal
  • Connexion : nom d’utilisateur / mot de passe WordPress

Ensuite, positionnez-vous dans votre thème :

C:\xampp\htdocs\monsite\wp-content\themes\MonThemewordpress
git init
git add .
git commit -m "Initial commit"

Étape 2 : Connecter votre projet à GitHub

  1. Créez un repo privé sur GitHub.
  2. Ajoutez le remote :
git remote add origin https://github.com/TON_USER/TON_REPO.git
git branch -M main
git push -u origin main
  1. Créez la branche staging pour vos tests :
git checkout -b staging
git push -u origin staging

Le flux devient simple : dev → staging → main → production.

Étape 3 : Configurer vos clés SSH

Pour sécuriser vos déploiements :

  1. Sur votre PC Windows :
ssh-keygen -t ed25519 -C "github-deploy"

Cela génère id_ed25519 (privée) et id_ed25519.pub (publique).

  1. Sur Hostinger : allez dans SSH Access et ajoutez la clé publique (id_ed25519.pub).
  2. Sur GitHub : créez des Secrets dans votre repo :
    • SSH_KEY_STAGING
    • SSH_KEY_PROD

Le contenu = clé privée id_ed25519.

Étape 4 : Créer le workflow GitHub Actions

Fichier : .github/workflows/deploy.yml

name: Deploy WordPress Themeon:
push:
branches:
- staging
- mainjobs:
deploy:
runs-on: ubuntu-latest steps:
- name: Checkout repository
uses: actions/checkout@v4 - name: Setup SSH
run: |
mkdir -p ~/.ssh
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
echo "${{ secrets.SSH_KEY_PROD }}" > ~/.ssh/id_ed25519
TARGET_PATH="/home/u123456789/domains/labotech.com/public_html/wp-content/themes/MonThemewordpress"
else
echo "${{ secrets.SSH_KEY_STAGING }}" > ~/.ssh/id_ed25519
TARGET_PATH="/home/u123456789/domains/staging.labotech.com/public_html/wp-content/themes/MonThemewordpress"
fi
chmod 600 ~/.ssh/id_ed25519
SSH_USER="u123456789"
SSH_HOST="140.80.80.80"
SSH_PORT="22000"
ssh-keyscan -p $SSH_PORT $SSH_HOST >> ~/.ssh/known_hosts
echo "TARGET_PATH=$TARGET_PATH" >> $GITHUB_ENV
echo "SSH_USER=$SSH_USER" >> $GITHUB_ENV
echo "SSH_HOST=$SSH_HOST" >> $GITHUB_ENV
echo "SSH_PORT=$SSH_PORT" >> $GITHUB_ENV - name: Build assets (npm si disponible)
run: |
if [ -f package.json ]; then
npm install
npm run build || echo "Pas de build défini, on continue"
else
echo "Pas de package.json, build npm ignoré"
fi - name: Deploy via rsync
run: |
rsync -avz --delete \
--exclude ".git" \
--exclude ".github" \
--exclude "node_modules" \
--exclude "dist" \
-e "ssh -p $SSH_PORT" ./ \
$SSH_USER@$SSH_HOST:$TARGET_PATH - name: Fix permissions
run: |
ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "
find $TARGET_PATH -type d -exec chmod 755 {} \;
find $TARGET_PATH -type f -exec chmod 644 {} \;
"

Étape 5 : Ajouter un .gitignore efficace

À la racine de votre thème :

# WordPress
*.log
*.sql
wp-config.php
*.zip
.DS_Store# Node / Build
node_modules/
dist/
build/# Git / CI
.github/
*.env# OS / Editor
Thumbs.db
.vscode/
.idea/

Étape 6 : Workflow de travail simple

Pour staging :

git add .
git commit -m "update"
git push origin staging

Déploiement automatique sur staging.labodigi.com

Pour production :

git checkout main
git merge staging
git push origin main

Déploiement automatique sur labodigi.com

Le workflow déclenchera automatiquement le build (si npm), rsync et correction des permissions sur le serveur.

Étape 7 : Avantages et bonnes pratiques

  • 1 seul workflow pour staging et production
  • Séparation claire des environnements
  • Pas de duplication inutile
  • Déploiement rapide et propre via rsync
  • Compatible XAMPP pour développement local
  • Build npm optionnel
  • .gitignore empêche l’envoi de fichiers inutiles
  • SSH sécurisé

Évitez :

  • Push direct sur main
  • Oublier .gitignore
  • Envoyer node_modules
  • Utiliser FTP manuel
  • Casser prod sans tester sur staging

Étape 8 : Bonus et ressources

Vous pouvez compléter votre setup avec des backups automatiques et un système de rollback pour plus de sécurité.

Découvrez des supports pour ordinateur portable sur Amazon et explorez des supports réglables sur AliExpress.

Conclusion

Avec ce workflow CI/CD pour WordPress, vous gagnez un processus :

  • Simple
  • Rapide
  • Sécurisé
  • Automatisé

Votre développement local sur XAMPP, vos tests sur staging et vos mises en production deviennent fiables et optimisés.

Important : toutes les valeurs MonThemewordpress, TARGET_PATH, u123456789, 140.80.80.80 et 22000 sont des exemples à remplacer par vos propres informations.

Retrouvez d’autres accessoires utiles dans la catégorie sur DiGiProUnic.

Laisser un commentaire