Сведения о перехватчиках предварительного получения
При отправке каждый скрипт выполняется в изолированной среде и может проводить проверки содержимого отправки. Отправка принимается, если состояние выхода скриптов имеет значение 0, или отклоняется при ином состоянии выхода.
Используйте перехватчики предварительного получения для выполнения бизнес-правил, обеспечения соответствия нормативным требованиям и предотвращения некоторых распространенных ошибок.
Примеры использования перехватчиков предварительного получения:
- обязательное соответствие сообщений о фиксации определенному шаблону или формату, например наличие допустимого номера обращения или определенная длина сообщений;
- блокировка ветви или репозитория путем отклонения всех отправок;
- запрет на добавление конфиденциальных данных в репозиторий путем блокировки ключевых слов, шаблонов или типов файлов;
- предотвращение слияния собственных изменений автором запроса на вытягивание.
Примеры перехватчиков предварительного получения для GitHub Enterprise Server можно просмотреть в репозитории github/platform-samples.
Влияние на производительность и рабочие процессы
Влияние на разработчиков и их рабочие процессы может быть значительным и должно быть тщательно рассмотрено. Перехватчики предварительного получения должны быть грамотно реализованы с учетом бизнес-потребностей, чтобы приносить максимальную пользу организации в целом.
Предварительные перехватчики могут иметь непреднамеренные последствия для производительности ваш экземпляр GitHub Enterprise Server и должны быть тщательно реализованы и проверены.
Из-за риска сбоя и влияния на производительность для всех пользователей экземпляра рекомендуется следующее.
- Избегайте запросов API в перехватчике предварительного получения. В частности, настоятельно рекомендуется выполнять запросы к внешним службам, что может занять больше времени и может привести к сложному влиянию на производительность.
- Избегайте длительных операций Git в перехватчике перед получением. Если ваш перехватчик предварительного получения выполняет операции Git в больших или занятых репозиториях, Git экземпляра и общая производительность могут негативно повлиять.
Примечание.
Чтобы избежать отказа от отправки из-за времени ожидания, все объединенные перехватчики предварительного получения должны работать в течение пяти секунд.
Тайм-ауты для хука перед приемом
Предпринимаемые хуки в GitHub Enterprise Server имеют фиксированный тайм-аут в 5 секунд (распределяется между всеми хуками). Это намеренная конструкция, направленная на предотвращение истощения ресурсов из-за долго работающих хуков и для предотвращения бессрочного блокирования операций репозитория неуправляемыми скриптами.
Все предварительные крючки для репозитория разделяют общий бюджет тайм-аута:
- Если крючок A занимает 3 секунды, у крючка B остаётся 2 секунды (с 5 секунд по умолчанию)
- Если крюк A заканчивается на 5 секунд, крюк B никогда не выполняется
**Коды выхода**: Настройка принуждения соблюдается (необязательные хуки не блокируют push-пушы)
**Тайм-ауты**: Push может провалиться независимо от конфигурации применения
Поведение тайм-аута
| Scenario | Применение = Включено | Исполнение = Отключённый/Тестирование |
|---|---|---|
| Код выхода ≠ 0 | Толчок отклонён | Толчок продолжается (только предупреждение) |
| Тайм-аут превышен | Толчок отклонён | Предупреждение + push всё равно может не дать результат |
Выбор между правилами отправки и перехватчики предварительного получения
Вы можете использовать правила push-отправки и перехватчики предварительного получения для управления изменениями, которые пользователи могут отправлять в репозиторий. Оба помогают применять политики, но они работают разными способами и предназначены для разных вариантов использования.
Правила принудительной отправки — это встроенный способ применения общих политик в репозиториях. Их можно использовать для блокировки push-уведомлений, которые не соответствуют определенным условиям, таким как обновления определенных файлов и путей, размер файла или тип файла. Вы можете управлять правилами отправки с помощью пользовательского интерфейса или API. Так как они являются типом наборов правил репозитория, правила push-отправки поддерживают журналы аудита и могут использоваться с режимом оценки для предварительного просмотра изменений или обхода при необходимости.
Используйте правила push-отправки, если вы хотите легко:
- Применение стандартных политик без написания скриптов.
- Последовательно применяйте политики между организациями и репозиториями.
- Управление правилами с помощью пользовательского интерфейса и API GitHub.
- Используйте собственные функции GitHub , такие как ведение журнала аудита, обход списков и аналитических сведений о правилах.