Déployer un site WordPress manuellement peut vite devenir un cauchemar, surtout lorsqu’on gère plusieurs environnements ou que l’équipe est composée de plusieurs développeurs. Entre les transferts FTP, les oublis de fichiers, les erreurs humaines, et les délais, le processus peut être long, frustrant, et source de bugs. C’est là qu’interviennent des outils comme GitHub Actions, qui permettent d’automatiser les tâches répétitives et de standardiser les déploiements à chaque mise à jour du code source.
Utiliser GitHub Actions avec WordPress, c’est faire un pas vers la professionnalisation de votre workflow de développement. Que vous gériez un petit blog ou un site d’entreprise complexe, cette approche vous garantit un gain de temps, une meilleure sécurité, et une réduction drastique des erreurs humaines. Dans cet article, on va plonger dans le concret : comment préparer votre projet WordPress, comment configurer un workflow GitHub, comment sécuriser vos clés SSH, et bien plus.
Pourquoi vous devriez envisager l’automatisation avec GitHub Actions ?

Voici quelques raisons majeures qui rendent cette automatisation indispensable :
- Moins d’erreurs humaines : finis les oublis de fichiers ou les mauvaises manipulations FTP.
- Gain de temps : le déploiement se fait en quelques secondes, automatiquement.
- Meilleure collaboration : tous les développeurs utilisent le même processus.
- Sécurité renforcée : plus besoin de partager des mots de passe FTP, utilisez des clés SSH chiffrées.
- Historique de déploiement clair : chaque déploiement est traçable via GitHub.
- Déploiement multi-environnement : vous pouvez facilement gérer des environnements de staging et de production.
- Standardisation du process : vos déploiements sont toujours faits de la même façon, sans surprise.
Introduction à GitHub Actions
Si vous êtes développeur et utilisez GitHub, vous avez sûrement entendu parler de GitHub Actions. C’est un outil d’automatisation intégré directement à GitHub qui vous permet d’exécuter des scripts à chaque événement déclenché dans votre dépôt. Dans le cadre de WordPress, il s’agit d’un allié puissant pour automatiser les tests, les déploiements, les mises à jour, et plus encore.
Qu’est-ce que GitHub Actions ?
GitHub Actions est un système d’intégration et de déploiement continu (CI/CD) proposé par GitHub. Il permet d’automatiser des tâches directement à partir de votre dépôt en écrivant des workflows définis dans des fichiers .yml
. Ces workflows peuvent être déclenchés par différents événements comme un push
, une pull request
, ou même à une heure précise.
L’avantage principal ? Tout est centralisé dans GitHub. Vous n’avez pas besoin d’installer un service externe : tout se fait à partir de votre dépôt. Vous pouvez configurer des actions simples comme envoyer une notification Slack, ou des workflows complexes pour tester, valider, et déployer un site web.
Les workflows sont composés de jobs et de steps, qui sont exécutés dans des runners (machines virtuelles fournies par GitHub ou auto-hébergées). Ces runners vont exécuter les commandes spécifiées, comme par exemple rsync
, ssh
, ou composer install
.
En quelques mots : GitHub Actions est un robot que vous programmez pour faire le sale boulot à votre place.
Fonctionnement des workflows GitHub
Un workflow GitHub Actions est un fichier de configuration écrit en YAML, stocké dans le dossier .github/workflows/
de votre dépôt. Il décrit quand le workflow doit s’exécuter (par exemple, à chaque push sur main
) et quoi faire.
Voici les principaux éléments qui composent un workflow :
name:
: le nom de votre workflow.on:
: les événements déclencheurs (ex.push
,pull_request
,schedule
).jobs:
: les différentes tâches à exécuter.steps:
: les commandes exécutées à l’intérieur d’un job.runs-on:
: l’environnement dans lequel les jobs tournent (ubuntu-latest
,windows-latest
, etc.).
Cas d’usage pour WordPress
Dans un projet WordPress, GitHub Actions peut servir à :
- Déployer automatiquement les fichiers du thème ou du plugin vers un serveur de staging ou production.
- Exécuter des tests PHP ou JavaScript (par exemple avec PHPUnit ou Jest).
- Optimiser le code avant déploiement (minification, compilation Sass/JS avec npm ou webpack).
- Générer et publier une documentation.
- Notifier l’équipe par email ou Slack à chaque changement majeur.
- Effectuer des sauvegardes ou synchronisations de fichiers ou bases de données.
Grâce à GitHub Actions, on peut faire de WordPress un projet de développement moderne, aligné sur les bonnes pratiques du monde DevOps.
Préparer votre projet WordPress pour le versionnage
Avant de pouvoir utiliser GitHub Actions pour déployer votre site WordPress, vous devez structurer proprement votre projet pour le rendre compatible avec Git et le contrôle de version. Cela permet de garder un historique propre, de collaborer efficacement, et d’automatiser les tâches de déploiement de manière fiable. Vous allez ici nettoyer votre dossier, ignorer les fichiers inutiles et pousser votre code sur GitHub.

Nettoyer et structurer les fichiers du projet
Un dépôt Git ne doit contenir que les fichiers essentiels au fonctionnement du site. Vous n’avez pas besoin de versionner les plugins tiers, les médias ou encore le cœur de WordPress si vous utilisez un environnement stable ou un gestionnaire comme Composer. Cela réduit le poids du dépôt et améliore la lisibilité.
Fichiers et dossiers à inclure :
/wp-content/themes/mon-theme/
– uniquement votre thème personnalisé/wp-content/plugins/mon-plugin/
– si vous développez un plugin maisoncomposer.json
– si vous utilisez Composerpackage.json
– si vous utilisez npm/webpack.github/
– vos workflows GitHub Actionsreadme.md
,.editorconfig
,.env.example
Créer un fichier .gitignore
adapté à WordPress
Le fichier .gitignore
est crucial pour exclure tous les fichiers qui ne doivent pas être suivis par Git. Cela inclut les données personnelles, les fichiers générés automatiquement, ou les plugins non développés en interne. Voici un exemple adapté pour WordPress :
# Core WordPress
/wp-admin/
/wp-includes/
license.txt
readme.html
# Configuration serveur
.htaccess
web.config
# Contenu à ignorer
wp-content/uploads/
wp-content/cache/
wp-content/backups/
wp-content/upgrade/
wp-content/plugins/
# Fichiers sensibles
wp-config.php
.env
*.log
Initialiser le dépôt Git et pousser sur GitHub
Une fois votre dossier structuré et le .gitignore
en place, vous pouvez initialiser votre dépôt local et le connecter à GitHub. Cela permet à GitHub Actions d’accéder à vos fichiers pour exécuter les workflows automatiquement.
Commandes à exécuter :
git init
git add .
git commit -m "Initial commit for WordPress project"
git remote add origin git@github.com:votre-utilisateur/mon-projet-wordpress.git
git push -u origin main
Assurez-vous que votre dépôt est privé ou sécurisé, surtout si vous stockez des fichiers sensibles ou de la configuration serveur.
Créer un workflow GitHub Actions pour WordPress
Pour automatiser le déploiement de votre projet WordPress, il faut créer un fichier YAML qui définit ce que GitHub doit faire lorsqu’un événement se produit dans votre dépôt. Ce fichier va contenir les instructions pour télécharger le code, établir une connexion SSH, lancer un script, etc.
Comprendre la structure d’un fichier YAML
Un fichier YAML (Yet Another Markup Language) est un format lisible pour décrire les workflows dans GitHub Actions. Il suit une indentation stricte et doit être placé dans .github/workflows/
.
Structure type :
name:
– Nom du workflow.on:
– Événement déclencheur (push
,pull_request
, etc.).jobs:
– Liste des tâches à exécuter.steps:
– Actions individuelles dans chaque job.
Définir les jobs, steps et déclencheurs
Un workflow est composé de jobs (ex. build, deploy), eux-mêmes constitués de steps (ex. checkout, SSH, rsync). Chaque job peut tourner sur une VM indépendante via runs-on
.
Éléments clés :
on: push
– Déclenche le workflow à chaque push.jobs:
– Contient un ou plusieurs jobs indépendants.steps:
– Liste d’actions commecheckout
,run
,uses
.
Exemple de workflow basique
Voici un exemple fonctionnel pour déployer un thème WordPress personnalisé via SSH et rsync
:
name: Deploy WordPress Theme
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy with rsync
run: |
rsync -avz --delete ./wp-content/themes/mon-theme/ user@host:/var/www/html/wp-content/themes/mon-theme/
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_KEY }}
Déploiement via SSH avec rsync
Déployer un site WordPress en utilisant rsync via SSH est une méthode à la fois rapide, sécurisée et idéale pour les automatisations. Elle permet de transférer uniquement les fichiers modifiés, ce qui réduit considérablement le temps de déploiement et limite les risques d’erreurs. Cette approche est parfaitement adaptée à GitHub Actions et s’intègre facilement dans un workflow CI/CD.

Pourquoi utiliser rsync ?
rsync est populaire car il combine performance, fiabilité, et sécurité pour les transferts distants.
- Ne transfère que les fichiers modifiés (gain de temps)
- Utilise SSH pour des connexions sécurisées
- Peut supprimer les fichiers obsolètes côté serveur
- Idéal pour les projets WordPress versionnés
- S’intègre nativement dans les scripts automatisés
Exemple de commande rsync pour WordPress
Une commande simple et directe suffit pour déployer un thème WordPress personnalisé :
- Synchronisation du dossier thème (
wp-content/themes/mon-theme/
) - Utilisation des options :
-a
(archiver),-v
(verbeux),-z
(compression) - Déploiement sécurisé via clé SSH
Exclure les fichiers non nécessaires au déploiement
Pour éviter les erreurs et protéger les données sensibles, certains fichiers doivent être exclus du transfert.
.git/
et.gitignore
node_modules/
.env
ouwp-config.php
- Fichiers logs (
*.log
) - Backups, dossiers de cache ou fichiers temporaires
Déploiement conditionnel pour staging et production
Lorsque vous travaillez sur un site WordPress professionnel, vous devez absolument distinguer les environnements de staging (préproduction) et de production. Cela permet de tester vos modifications avant de les rendre visibles aux visiteurs. Grâce à GitHub Actions, vous pouvez configurer des déploiements conditionnels selon la branche sur laquelle vous poussez votre code, ce qui évite les erreurs en prod.
Gérer plusieurs environnements via branches Git
La manière la plus simple de séparer les environnements est d’utiliser différentes branches Git pour chaque contexte.
main
oumaster
pour la productiondevelop
,staging
, oupreprod
pour les tests- Permet de garder un historique clair par environnement
- Idéal pour tester les nouveautés sans risquer d’impacter le site en ligne
Ajouter des conditions dans le fichier YAML
Dans GitHub Actions, vous pouvez facilement conditionner l’exécution d’un déploiement selon la branche active. Cela se fait dans la section on:
ou dans les jobs via if:
.
- Utiliser
on: push: branches: [main]
pour déclencher uniquement sur la prod - Ajouter des conditions dans un job avec
if: github.ref == 'refs/heads/staging'
- Créer plusieurs jobs spécifiques à chaque environnement
Maintenir une cohérence entre staging et prod
Pour que vos environnements restent synchronisés, il est essentiel de respecter quelques pratiques :
- Toujours tester les nouveautés sur staging avant la mise en production
- Fusionner régulièrement
staging
versmain
après validation - Garder une configuration identique (même structure de fichiers, même scripts)
- Utiliser des variables d’environnement distinctes pour chaque contexte
- Documenter les étapes de validation et de déploiement pour toute l’équipe
Bonnes pratiques de sécurité pour l’automatisation
L’automatisation des déploiements WordPress avec GitHub Actions offre de nombreux avantages, mais elle implique aussi des risques si elle est mal sécurisée. Protéger vos données sensibles, restreindre les accès et vérifier les sources de vos scripts sont des étapes essentielles pour éviter les failles et les abus. Voici quelques meilleures pratiques pour garantir un workflow sûr et fiable.
Stocker les données sensibles dans les secrets
Ne jamais stocker de mots de passe, clés privées, ou identifiants en clair dans le code. GitHub propose un système de secrets chiffrés pour cela.
- Ajouter vos clés SSH dans Settings > Secrets and variables
- Utiliser
${{ secrets.NOM_DU_SECRET }}
dans vos fichiers YAML - Exemple de secrets :
SSH_KEY
,FTP_PASSWORD
,DB_HOST
- Les secrets ne sont jamais visibles dans les logs GitHub Actions
Utiliser des workflows vérifiés
Certaines actions proposées sur GitHub Marketplace sont développées par des tiers. Avant de les intégrer, vous devez vous assurer qu’elles sont fiables.
- Privilégier les actions officielles (par GitHub ou mainteneurs reconnus)
- Vérifier les repos GitHub des actions utilisées
- Indiquer une version précise comme
@v3
pour éviter les changements automatiques - Lire les issues/commentaires pour détecter d’éventuels problèmes de sécurité
Limiter les accès aux dépôts et actions
Plus un dépôt est accessible, plus il est exposé aux risques. Il est donc recommandé de restreindre les autorisations autant que possible.
- Utiliser des dépôts privés
- Ne donner l’accès qu’aux membres nécessaires
- Activer l’option “Require approval for all outside collaborators” si besoin
- Restreindre les permissions des tokens par défaut dans
.github/settings.yml
Conclusion
L’automatisation du déploiement de WordPress avec GitHub Actions est un véritable levier de productivité pour les développeurs. Elle permet de gagner du temps, de réduire les erreurs humaines et de maintenir une cohérence entre les différents environnements. En structurant correctement votre projet, en sécurisant vos accès, et en configurant des workflows efficaces, vous transformez votre processus de déploiement en une routine fiable et professionnelle. Ce système s’adapte aussi bien aux petits projets qu’aux sites complexes. Alors, pourquoi continuer à déployer manuellement quand tout peut être automatisé ?