Le déploiement de sites statiques modernes (SSG) offre des performances incomparables et une sécurité maximale : aucun moteur d’exécution serveur (PHP ou Node.js) n’est exposé publiquement aux requêtes web des visiteurs.
Cependant, les hébergeurs mutualisés classiques ne disposent pas toujours d’un environnement Node.js récent pour exécuter les commandes de compilation (npm run build).
Voici l’architecture que j’ai conçue pour automatiser entièrement la chaîne de livraison continue :
1. Découplage de la compilation et de la distribution
Le principe clé repose sur la séparation stricte de deux rôles :
- L’environnement d’intégration continue (GitHub Actions) : il dispose de conteneurs Linux éphémères puissants, capables d’exécuter Node.js 22+, d’installer les dépendances et de compiler l’ensemble des pages statiques en quelques secondes.
- Le serveur de distribution (Hébergement OVH) : il n’a qu’un seul rôle, servir les fichiers compilés (
HTML,CSS,JS, images et polices WOFF2) avec un serveur HTTP optimisé (Nginx / Apache).
2. Le pipeline GitHub Actions
À chaque git push sur la branche main, le workflow exécute les étapes suivantes :
- Récupération du code source et cache des dépendances
npm. - Compilation statique via
astro builddans le répertoire temporairedist/. - Injection des règles de routage et de cache dans le fichier
.htaccess. - Poussée des fichiers statiques compilés vers une branche dédiée (
ovh) avec un historique linéaire. - Notification immédiate de l’hébergeur via un appel HTTP sécurisé (Webhook OVH VCS).
- name: Push to ovh branch
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
publish_branch: ovh
force_orphan: false
- name: Ping OVH Webhook
run: curl -s -X POST "${{ secrets.OVH_WEBHOOK_URL }}"
3. Résultats & Avantages
- Temps de déploiement moyen : moins de 25 secondes entre le commit et la mise en ligne effective.
- Robustesse : en cas d’erreur de build, la version précédente reste en ligne sans interruption de service.
- Zéro maintenance serveur : pas de démon à superviser, pas de dépendances obsolètes sur l’hôte.