Présentation
Le déploiement avec Git vous permet de pousser votre code directement depuis votre ordinateur (ou un service CI/CD comme GitHub Actions) vers votre serveur Gaprod. Chaque git push met à jour votre site automatiquement, sans avoir à téléverser des fichiers via FTP.
Il existe deux approches principales :
- Git sur le serveur (dépôt bare) : vous créez un dépôt Git directement sur votre hébergement Gaprod
- Déploiement depuis GitHub/GitLab : vous configurez un webhook ou une action CI/CD pour déclencher le déploiement depuis votre dépôt distant
Accès SSH requis
Le déploiement Git nécessite un accès SSH à votre hébergement. Consultez d'abord le guide Accès SSH si ce n'est pas encore configuré.
Méthode 1 : Dépôt bare sur le serveur
Cette méthode crée un dépôt Git "nu" (bare) sur votre serveur qui reçoit les push et déclenche automatiquement le déploiement.
Créer un dépôt bare sur le serveur
Connectez-vous à votre serveur via SSH et créez le dépôt bare dans votre répertoire home :
mkdir ~/repos/monsite.git cd ~/repos/monsite.git git init --bareCe dossier contiendra l'historique Git mais pas les fichiers du site directement.
Créer le hook post-receive
Le hook
post-receiveest un script exécuté automatiquement après chaque push. Il copie les fichiers verspublic_html.Créez le fichier du hook :
nano ~/repos/monsite.git/hooks/post-receiveCollez le contenu suivant :
#!/bin/bash GIT_WORK_TREE=~/public_html git checkout -f main echo "Déploiement terminé."Remplacez
mainpar le nom de votre branche principale si différent.Rendez le script exécutable :
chmod +x ~/repos/monsite.git/hooks/post-receiveConfigurer le dépôt distant sur votre ordinateur
Sur votre ordinateur, dans votre projet Git local, ajoutez le serveur comme remote :
git remote add gaprod votre_user@adresse_serveur:repos/monsite.gitDéployer avec git push
Pour déployer, il suffit de faire :
git push gaprod mainLe hook
post-receives'exécute automatiquement et déploie les fichiers danspublic_html.
Méthode 2 : Déploiement depuis GitHub avec GitHub Actions
Cette méthode déclenche le déploiement automatiquement à chaque push sur GitHub.
Générer une clé SSH dédiée
Sur votre ordinateur, générez une paire de clés SSH dédiée au déploiement :
ssh-keygen -t ed25519 -C "deploy@monsite.fr" -f ~/.ssh/deploy_gaprodN'entrez pas de passphrase (le déploiement automatique ne peut pas saisir de passphrase interactivement).
Ajouter la clé publique au serveur
Copiez le contenu de
~/.ssh/deploy_gaprod.pubet ajoutez-le dans le fichier~/.ssh/authorized_keyssur votre serveur Gaprod (via SSH ou le gestionnaire de clés cPanel).Ajouter la clé privée aux secrets GitHub
Dans votre dépôt GitHub, allez dans Settings → Secrets and variables → Actions → New repository secret.
Créez les secrets suivants :
SSH_PRIVATE_KEY: contenu de~/.ssh/deploy_gaprod(clé privée)SSH_HOST: adresse de votre serveurSSH_USER: votre identifiant cPanelSSH_PATH: chemin verspublic_html(ex. :/home/votre_user/public_html)
Créer le workflow GitHub Actions
Dans votre dépôt, créez le fichier
.github/workflows/deploy.yml:name: Déploiement FTP/SSH on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Configurer SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts - name: Déployer via rsync run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key" \ ./ \ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:${{ secrets.SSH_PATH }}/À chaque push sur
main, votre site est automatiquement déployé sur le serveur.
Attention au fichier .gitignore
Assurez-vous d'ajouter au .gitignore les fichiers qui ne doivent pas être déployés : .env, node_modules/, vendor/ (si vous les installez sur le serveur), fichiers de logs, etc.
Bonnes pratiques
Utiliser des branches pour les environnements
Travaillez avec des branches séparées pour vos environnements :
main→ production (déploiement automatique)staging→ pré-production (déploiement vers un sous-domaine de test)develop→ développement local uniquement
Ne pas versionner les données sensibles
N'incluez jamais dans Git :
- Fichiers
.envavec mots de passe ou clés API - Fichiers de configuration avec identifiants BDD (
wp-config.php) - Dossier
node_modules/ouvendor/
Maintenir un fichier .gitignore
.env
node_modules/
vendor/
wp-config.php
wp-content/uploads/
*.log
Étapes suivantes
Avec le déploiement Git configuré :
- Configurez des environnements de staging pour tester avant de déployer en production
- Intégrez des tests automatisés dans votre pipeline CI/CD
- Consultez le guide Node.js sur cPanel si votre projet nécessite un build step