À propos des hooks de pré-réception
Quand une poussée (push) est effectuée, chaque script s’exécute dans un environnement isolé et peut effectuer des vérifications sur le contenu de la poussée. Les scripts déclenchent l’acceptation de la poussée si l’état de sortie est 0 ou son rejet si l’état de sortie n’est pas zéro.
Utilisez des hooks de pré-réception pour répondre aux règles métier, appliquer la conformité réglementaire et prévenir certaines erreurs courantes.
Exemples de la façon dont vous pouvez utiliser des hooks de pré-réception :
- Exiger que les messages de commit suivent un modèle ou un format spécifique, par exemple qu’ils incluent un numéro de ticket valide ou respectent une certaine longueur
- Verrouiller une branche ou un dépôt en rejetant toutes les poussées
- Empêcher l’ajout de données sensibles au dépôt en bloquant des mots clés, des modèles ou des types de fichiers
- Empêcher l’auteur d’une demande de tirage (pull request) de fusionner ses propres modifications
Vous pouvez voir des exemples de hooks de pré-réception pour GitHub Enterprise Server dans le dépôt github/platform-samples
.
Impact sur les performances et les workflows
L’impact sur les développeurs et leurs workflows peut être important et doit être considéré avec attention. Les hooks de pré-réception basés sur des besoins métier et implémentés de manière réfléchie sont ceux qui offrent le plus d’avantages à l’organisation dans son ensemble.
Les hooks de pré-réception peuvent avoir des effets inattendus sur les performances de votre instance GitHub Enterprise Server et doivent être implémentés et vérifiés attentivement.
En raison du risque d’échec et d’impact sur les performances pour tous les utilisateurs de votre instance, voici nos recommendations.
- Évitez les demandes d’API au sein d’un hook de pré-réception. En particulier, nous déconseillons fortement d’effectuer des demandes à des services externes, ce qui peut prendre plus de temps et entraîner un impact sur les performances.
- Évitez les opérations Git de longue durée au sein d’un hook de pré-réception. Si votre hook de pré-réception effectue des opérations Git dans des référentiels volumineux ou occupés, les performances globales de votre instance peuvent être affectées négativement.
Remarque : Pour éviter le rejet d’un push en raison d’un délai d’expiration, tous les hooks de pré-réception combinées doivent s’exécuter en moins de cinq secondes.