Introduction aux hooks Git
La livraison continue exige un haut niveau d’automatisation. Vous ne pouvez pas effectuer de livraison continue si vous n’avez pas un codebase de qualité. C’est là que Git entre en jeu.
Il vous permet d’automatiser la plupart des contrôles dans votre codebase, Avant de commiter le code dans votre dépôt local, et à fortiori dans votre dépôt distant.
Hooks Git
Les hooks Git sont un mécanisme qui permet d’exécuter du code avant ou après certains événements de cycle de vie Git.
Par exemple, il est possible de se raccorder à l’événement commit-msg pour valider le fait que la structure du message de validation respecte le format recommandé.
Les hooks peuvent être n’importe quel code exécutable, y compris interpréteur de commandes, PowerShell, Python ou autres scripts. Il peut également s’agir d’un exécutable binaire. Peu importe.
Les seuls critères sont que les hooks doivent être stockés dans le dossier .git/hooks de la racine du référentiel. Leurs noms doivent également correspondre aux événements associés (Git 2.x) :
- applypatch-msg
- pre-applypatch
- post-applypatch
- pre-commit
- prepare-commit-msg
- commit-msg
- post-commit
- pre-rebase
- post-checkout
- post-merge
- pre-receive
- update
- post-receive
- post-update
- pre-auto-gc
- post-rewrite
- pre-push
Cas d’usage pratiques pour l’utilisation de hooks Git
Étant donné que les hooks Git exécutent les scripts sur le type d’événement spécifique sur lequel ils sont appelés, vous pouvez faire de nombreuses choses avec eux.
Voici quelques exemples de cas où vous pouvez utiliser des hooks pour appliquer des stratégies, garantir la cohérence et contrôler votre environnement :
- Lors de l’application de conditions préalables à la fusion
- Vérification de l’association de l’ID d’élément de travail dans votre message de validation
- Prévention de l’utilisation de code erroné par vous et votre équipe
- Envoi de notifications à la salle de conversation de votre équipe (Teams, Slack, HipChat, etc.)
Dans l’unité suivante, vous allez voir comment implémenter Git Hooks.