Informationen zu Pre-Receive-Hooks
Wenn ein Push vorgenommen wird, wird jedes Skript in einer isolierten Umgebung ausgeführt und kann den Inhalt der Pushs überprüfen. Die Skripts sorgen dafür, dass der Push bei dem Beendigungsstatus 0 akzeptiert und bei einem Beendigungsstatus ungleich 0 abgelehnt wird.
Verwende Pre-Receive-Hooks, um Geschäftsregeln zu erfüllen, Regelüberwachungen durchzusetzen und bestimmte allgemeine Fehler zu verhindern.
Beispiele zur möglichen Verwendungsweise von Pre-Receive-Hooks:
- Lege fest, dass Commit-Mitteilungen einem bestimmtem Muster oder Format folgen, also dass sie beispielsweise eine gültige Ticketnummer enthalten oder eine bestimmte Länge aufweisen.
- Sperre einen Branch oder ein Repository, indem du alle Push-Vorgänge ablehnst.
- Verhindere, dass dem Repository vertrauliche Daten hinzugefügt werden, indem du Schlüsselwörter, Muster oder Dateitypen blockierst.
- Verhindere, dass der Autor eines privaten Repositorys seine eigenen Änderungen mergen kann.
Beispiele für Pre-Receive-Hooks für GitHub Enterprise Server sind im Repository github/platform-samples
enthalten.
Auswirkung auf die Leistung und Workflows
Die Auswirkung auf Entwickler und auf deren Workflows kann erheblich sein und muss sorgsam durchdacht werden. Von Pre-Receive-Hooks, die auf Geschäftsanforderungen basieren und durchdacht implementiert werden, kann die Organisation als Ganzes am meisten profitieren.
Pre-Receive-Hooks können unerwünschte Auswirkungen auf die Leistung von Ihre GitHub Enterprise Server-Instance haben und sollten sorgfältig implementiert und überprüft werden.
Aufgrund des Risikos von Fehlern und Leistungseinbußen für alle Benutzer Ihrer Instanz empfehlen wir Folgendes.
- Vermeiden Sie API-Anforderungen innerhalb eines Pre-Receive-Hooks. Insbesondere wird dringend davon abgeraten, Anforderungen an externe Dienste zu stellen, was länger dauern kann und die Leistung beeinträchtigen kann.
- Vermeiden Sie langwierige Git-Operationen innerhalb eines Pre-Receive-Hooks. Wenn Sie innerhalb eines Pre-Receive-Hooks Git-Operationen in großen oder ausgelasteten Repositorys ausführen, kann das negative Auswirkungen auf die Git-Ausführung Ihrer Instanz und die Gesamtleistung haben.
Note
Damit Pushes nicht aufgrund eines Timeouts abgelehnt werden, sollten alle kombinierten Pre-Receive-Hooks in weniger als fünf Sekunden ausgeführt werden.