Как настроить и поддерживать правила защиты ветвей GitHub
Защита ветвей — важная часть предотвращения несчастных случаев и ошибок в вашем репозитории GitHub.
Защита ветвей — важная часть предотвращения несчастных случаев и ошибок в вашем репозитории GitHub. Они обеспечивают соблюдение правил, которым должен следовать каждый, кто хочет отправить коммиты или объединить запросы на включение в ваш репозиторий.
Зачем нужна защита филиалов?
Защита ветвей направлена на предотвращение нежелательных действий. Вы можете установить правила, требующие проверки запросов на включение, требующие завершения тестов перед слиянием или требующие подписанных коммитов для проверки подлинности.
По умолчанию защита веток отключит принудительные отправки и предотвратит удаление ветвей. Это две вещи, которые вы, по сути, никогда не хотите, чтобы происходили регулярно, и никогда без явного согласия кого-то, кто может сделать исключение и отключить защиту ветки.
Это полезно для безопасности, особенно в крупных проектах или репозиториях с открытым исходным кодом, где сопровождающие хотят обеспечить соблюдение определенного процесса отправки и утверждения новых изменений. Ветки также можно полностью заблокировать для пользователей, не являющихся администраторами, что можно использовать для применения дополнительной авторизации к веткам выпуска/производства.
Защита ветвей по умолчанию не применяется к администраторам. Вы также можете дать людям специальное разрешение, позволяющее им обходить его. Если вы не хотите, чтобы администраторы или кто-либо еще мог обходить определенные правила, вы можете отключить это для каждого правила.
Защита ветвей доступна бесплатно для общедоступных репозиториев, но недоступна для частных репозиториев без GitHub Team или Enterprise.
Что делают правила защиты ветвей GitHub?
Существует довольно много настроек, которые вы можете включить для защиты ветвей, и все они выполняют разные функции. Вот некоторые из наиболее полезных:
- Параметр «Требовать проверки запросов на включение перед объединением» не позволит объединять PR в защищенные ветки до тех пор, пока один или несколько человек, имеющих разрешение, не одобрит запрос. Это особенно полезно для предотвращения самостоятельного объединения PR одним человеком.
- Параметр «Требовать разрешения разговора» гарантирует, что будет разрешено объединять только закрытые и завершенные запросы на запросы.
- Параметр «Требовать проверки состояния перед слиянием» будет интегрирован с вашим конвейером CI для запуска тестов новых коммитов, чтобы убедиться, что они ничего не нарушают. В GitHub даже есть API статуса фиксации, который можно использовать для внешней интеграции.
- «Требовать успешного развертывания» обычно используется для обеспечения правильного развертывания сборок в промежуточных средах перед объединением.
- «Требовать линейную историю» предотвращает передачу коммитов слияния в ветку, что требует, чтобы слияния были сплющенными или перебазированными. Многие команды предпочитают линейную историю коммитов, поскольку она значительно упрощает отслеживание и откат версий.
- «Требовать подписанные коммиты» будет принудительно подписывать коммиты GPG, проверяя, что они были созданы с использованием закрытого ключа пользователя, а не созданы злоумышленником с доступом к GitHub.
Помимо всего этого, вы также можете напрямую управлять разрешениями, чтобы решить, кто может отправлять сообщения в ветку. Например, ветки выпуска обычно имеют дополнительные ограничения, чтобы любой случайный стажер не мог случайно перейти в производство.
Вы также можете полностью заблокировать ветки, как в случае с вышестоящими ветвями, которые не должны меняться.
Кроме того, хотя у администраторов есть возможность обходить эти правила по умолчанию, вы также можете отключить ее, чтобы никто в вашем репозитории не мог нарушать правила без отключения правил.
Как настроить правила защиты веток GitHub
Правила защиты веток задаются в настройках репозитория. Нажмите кнопку настроек вашего репозитория, а затем нажмите «Защита ветвей».
Необходимо установить фильтр для правила защиты ветвей. Вы можете просто установить имя конкретной ветки, например «основная», или использовать подстановочные знаки для одновременного выбора нескольких ветвей.
Неограниченный подстановочный знак «*» будет применяться ко всем ветвям, и несколько правил защиты ветвей могут накладываться друг на друга. Однако вы не можете иметь два правила с одним и тем же фильтром.
Далее у вас будет возможность настроить каждый параметр защиты ветки. По умолчанию отключены только принудительные отправки и удаления, но вы можете установить здесь любой из флажков, чтобы включить другие нужные вам функции.
Большую часть времени вам захочется включить правило, запрещающее администраторам обходить правила.
Затем вы можете включить это правило, однако вам придется повторно пройти аутентификацию с помощью мобильного приложения GitHub, поскольку изменение правил защиты веток является ограниченным действием. Вы можете проверить, включена ли она, попытавшись принудительно отправить — ваш клиент Git должен показать ошибку.