Utiliser Git et Bash ensemble permet d’automatiser le déploiement continu sur des serveurs Linux. Ce choix favorise la traçabilité des changements et la reproductibilité du pipeline de livraison.
La combinaison de scripts Bash et de hooks Git offre des actions immédiates dans le terminal pour des tâches répétitives et sûres. Nous pouvons maintenant synthétiser les points clés avant d’entrer dans les exemples pratiques.
A retenir :
- Automatisation des déploiements via hooks Git et scripts Bash
- Séparation développement et production par push-to-deploy sur serveur nu
- Gestion d’environnement via variables Git et désactivation ciblée
- Bonnes pratiques opérationnelles pour permissions, tests et sécurité
Concevoir des hooks Git et scripts Bash pour un déploiement continu sous Linux
Après cette synthèse, il faut commencer par choisir les hooks adaptés au flux de travail et aux contraintes de l’équipe. Un hook bien conçu automatise des actions utiles sans imposer de risques pour la branche de production.
Hook
Moment d’appel
Usage courant
Remarques
pre-commit
Avant ajout au commit
Linting local, vérification de format
Rapide, côté développeur
commit-msg
Après message de commit
Validation du format du message
Empêche mauvais messages
post-commit
Après la validation locale
Déploiement local de test
Décrochage possible en production
post-receive
Après push vers repo nu
Déploiement serveur, intégration continue
Contrôle de branche recommandé
Pour activer un script, il faut retirer l’extension .sample et rendre le fichier exécutable avec chmod. Assurez-vous que la première ligne est un shebang adapté au langage du script.
Un détail critique consiste à gérer les variables d’environnement que Git définit lors des appels de hook, car elles modifient le contexte d’exécution du script. Comprendre cet environnement prépare la gestion fine des permissions et du déploiement distant.
Étapes d’activation :
- Supprimer suffixe .sample des hooks
- Ajouter shebang en tête des scripts
- Rendre les scripts exécutables avec chmod
- Tester localement avant déploiement distant
« J’ai automatisé le test rapide via post-commit et gagné des heures chaque semaine. »
Sammy N.
Gérer l’environnement et les permissions pour des scripts fiables en production
Ce passage implique de consolider l’environnement d’exécution et d’aligner les droits sur le serveur pour éviter des erreurs à l’exécution. Une mauvaise propriété du répertoire web ou un index Git mal positionné provoque des échecs inattendus.
Variables d’environnement définies par Git et leur impact
Ce point connecte la conception des hooks à leur exécution réelle sur la machine cible et permet d’anticiper les conflits de fichiers. Les variables comme GIT_DIR, GIT_INDEX_FILE et GIT_AUTHOR_NAME modifient la manière dont Git voit le dépôt.
Variable
Description
Observation
Exemple
GIT_DIR
Chemin vers le répertoire Git
Diffère pour repo nu ou local
.git ou /home/user/proj
GIT_INDEX_FILE
Emplacement de l’index
Peut pointer hors du worktree
.git/index ou unset
GIT_AUTHOR_NAME
Nom de l’auteur du commit
Transmis selon le hook
Sammy Utilisateur
GIT_PREFIX
Préfixe relatif du worktree
Vide pour repo racine
» ou chemin relatif
Pour écrire des scripts robustes, testez quelles variables sont présentes et adaptez les chemins en conséquence grâce à des logs temporaires. Cette pratique aide à dépanner des comportements différents entre hooks.
Droits, propriété et bonnes pratiques sur Linux pour le déploiement
Ce volet relie la gestion des variables à l’administration système et minimise les erreurs liées aux permissions sur /var/www/html. Chown et chmod doivent être appliqués avec prudence pour éviter d’exposer le serveur.
Points de sécurité :
- Assigner la propriété au compte d’exécution sécurisé
- Limiter l’accès SSH aux clés publiques autorisées
- Exécuter les scripts avec l’utilisateur non-privilégié
- Auditer les changements de permissions régulièrement
« L’équipe a réduit les incidents liés aux droits en appliquant un processus de contrôle simple. »
Alice N.
Automatiser le pipeline : du commit local au push-to-deploy sur serveur
En reliant les concepts précédents, le pipeline doit distinguer clairement les déploiements locaux des mises en production pour réduire les risques. Un flux push-to-deploy vers un dépôt nu sur le serveur permet d’automatiser la publication contrôlée.
Déploiement local via post-commit et tests rapides
Ce cas pratique montre comment utiliser post-commit pour déployer dans un répertoire web local à des fins de test, en désactivant GIT_INDEX_FILE si nécessaire. Le script typique commence par unset GIT_INDEX_FILE puis exécute git –work-tree checkout -f vers la racine web.
Étapes déploiement local :
- Installer Apache et posséder la racine web
- Créer index.html et ajouter au dépôt
- Ajouter post-commit avec unset GIT_INDEX_FILE
- Rendre le hook exécutable et tester
« J’ai configuré un post-commit local pour valider visuellement les changements avant push. »
Marco N.
Push-to-deploy sur un dépôt nu et contrôle des branches
Après avoir testé localement, il est préférable d’utiliser un dépôt nu en production et un hook post-receive pour checkout du code vers la racine web. Le script doit filtrer les références, en ne déployant que la branche principale pour éviter des surprises.
- Initialiser repo nu sur la machine de production
- Ajouter hook post-receive lisant oldrev newrev ref
- Déployer uniquement refs/heads/master avec git checkout -f
- Notifier via sortie standard pour suivi
« Utiliser un dépôt nu a rendu les déploiements reproductibles et traçables pour toute l’équipe. »
Lina N.
Pour intégrer l’intégration continue, reliez ces hooks à des tests automatisés et reportez les résultats avant tout push en production. Cette orchestration complète le passage vers une chaîne fiable d’intégration et de livraison continue.
Source : GitHub Docs, « Déploiement continu – Documentation GitHub », GitHub ; Atlassian, « qu’est-ce que c’est et comment se lancer – Atlassian », Atlassian ; GitLab, « Du code à la production : guide du déploiement continu avec … », GitLab.
