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.
Hinweis
Damit Pushes nicht aufgrund eines Timeouts abgelehnt werden, sollten alle kombinierten Pre-Receive-Hooks in weniger als fünf Sekunden ausgeführt werden.
Auswählen zwischen Pushregeln und Pre-Receive-Hooks
Du kannst Pushregeln und Pre-Receive-Hooks verwenden, um zu steuern, welche Änderungen Benutzende an dein Repository übertragen können. Beides hilft beim Erzwingen von Richtlinien, funktioniert aber auf unterschiedliche Weise und ist für unterschiedliche Anwendungsfälle ausgelegt.
Pushregeln sind eine integrierte Möglichkeit zum repositorysübergreifenden Erzwingen allgemeiner Richtlinien. Du kannst sie verwenden, um Pushes zu blockieren, die bestimmte Bedingungen nicht erfüllen, z. B. Aktualisierungen bestimmter Dateien und Pfade, Dateigröße oder Dateityp. Du kannst Pushregeln über die Benutzeroberfläche oder API verwalten. Da es sich um eine Art von Repositoryregeln handelt, unterstützen Pushregeln Überwachungsprotokolle, und der Auswertungsmodus kann verwendet werden, um eine Vorschau der Änderungen anzuzeigen oder sie bei Bedarf zu umgehen.
Verwende Pushregeln, wenn du Folgendes ganz einfach erreichen möchtest:
- Standardrichtlinien erzwingen, ohne Skripts zu schreiben
- Richtlinien einheitlich in Organisationen und Repositorys anwenden
- Regeln über die GitHub-Benutzeroberfläche und -APIs verwalten
- Native GitHub-Features wie Überwachungsprotokollierung, Umgehungslisten und Regeleinblicke verwenden