Présentation des hooks Git
La livraison continue exige un niveau important d’automatisation. Vous ne pouvez pas fournir en continu si vous n’avez pas de codebase de qualité. C’est là que git fonctionne si bien.
Il vous permet d’automatiser la plupart des vérifications dans votre codebase. Avant de valider le code dans votre référentiel local, sans parler du dépôt distant.
Crochets Git
Les hooks Git sont un mécanisme qui permet au code d’être exécuté avant ou après certains événements de cycle de vie Git.
Par exemple, l’un peut se connecter à l’événement commit-msg pour vérifier que la structure des messages de validation suit le format recommandé.
Les hooks peuvent être n’importe quel code exécutable, y compris l’interpréteur de commandes, PowerShell, Python ou d’autres scripts. Ou il peut s’agir d’un exécutable binaire. Tout est permis !
Les seuls critères sont que les hooks doivent être stockés dans le dossier .git/hooks dans la racine du dépôt. En outre, ils doivent être nommés pour correspondre aux événements associés (Git 2.x) :
- applypatch-msg
- pré-application du patch
- après-application-du-correctif
- pré-validation
- préparer-message-de-commit
- commit-msg
- post-engagement
- pré-rebase
- après-commande
- post-fusion
- pré-réception
- mettre à jour
- post-réception
- après mise à jour
- pré-auto-gc
- post-réécriture
- pré-push
Cas pratiques d'utilisation des hooks Git
Étant donné que les hooks Git exécutent des scripts basés sur des événements spécifiques, vous pouvez effectuer un large éventail d’actions avec eux.
Voici quelques exemples d’utilisation de hooks pour appliquer des stratégies, garantir la cohérence et contrôler votre environnement :
- En appliquant les conditions préalables à la fusion
- Vérification de l'association ID de l'élément de tâche dans votre message de validation
- Empêcher & votre équipe de valider du code défectueux
- Envoi de notifications à la salle de conversation de votre équipe (Teams, Slack, HipChat, etc.)
Dans l’unité suivante, vous verrez comment implémenter Git Hooks.