Skip to main content

Enterprise Server 3.20 в настоящее время доступен в качестве кандидата на выпуск.

Сведения о перехватчиках предварительного получения

          *Обработчики предварительного получения* — это скрипты, выполняемые на устройстве GitHub Enterprise Server, которые можно использовать для реализации проверок качества.

Сведения о перехватчиках предварительного получения

При отправке каждый скрипт выполняется в изолированной среде и может проводить проверки содержимого отправки. Отправка принимается, если состояние выхода скриптов имеет значение 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 , такие как ведение журнала аудита, обход списков и аналитических сведений о правилах.