Используйте правила защиты веток, чтобы обеспечить качественный вклад в ваши репозитории.
GitHub предоставляет набор параметров, которые позволяют вам определить конкретные критерии, которые должны быть соблюдены, прежде чем запрос на вытягивание можно будет объединить в ваш репозиторий. В этой статье рассказывается, как настроить правило защиты ветки, требующее проверки запросов на вытягивание, и проверку состояния, чтобы убедиться, что тесты выполняются в различных средах. За меньшее время, чем требуется, чтобы выпить чашку кофе, вы можете значительно снизить риск мошеннических слияний, наносящих ущерб вашему коду.
🛡 Защитите свою ветку
Первый шаг к охране королевства — добавить правило защиты ветки. Добавление правила защиты ветки позволяет указать список критериев, которые должны быть соблюдены, чтобы внести изменение в защищенную ветку. Указание списка критериев, которые должны быть соблюдены перед слиянием, позволяет формализовать и автоматизировать повторяющиеся задачи, необходимые для обеспечения качественного вклада в ваш репозиторий. Защита веток бесплатна для общедоступных репозиториев, но для добавления подписки Pro к частным репозиториям требуется подписка Pro.
Добавьте свое первое правило, щелкнув вкладку «Настройки» на странице GitHub вашего репозитория и перейдите в раздел «Ветви». Обратите внимание на свою ветку по умолчанию (обычно main
) и нажмите «Добавить правило»:
Введите main
в поле ввода Шаблон имени ветки и нажмите Ввод или нажмите Сохранить изменения:
Поздравляю! Вы только что определили main
как защищенную ветвь. На следующем шаге вы начнете определять критерии, которые должны быть соблюдены, чтобы изменения были объединены в вашу защищенную ветку.
👀 Требовать обзоры
Когда требуется проверка, кто-то, у кого есть push-доступ к вашему репозиторию, должен благословить открытый запрос на извлечение, прежде чем запрос на извлечение можно будет объединить в защищенную ветку. Требование проверки запроса на включение — отличный способ уменьшить количество ошибок, так как это гарантирует, что кто-то, имеющий опыт работы с вашим репозиторием, проверил изменение и задал вопросы, где это уместно.
Чтобы запросить проверку запросов на вытягивание, установите флажок рядом с пунктом Требовать запрос на вытягивание перед слиянием. Не забудьте также установить флажок рядом с «Требовать одобрения»:
Потрясающий! Теперь при открытии запроса на вытягивание кнопка Объединить будет неактивна до тех пор, пока хотя бы 1 участник не просмотрит и не одобрит изменения. На последнем шаге мы добавим проверку статуса, чтобы убедиться, что конкретное действие успешно завершено.
🦿 Запустить тесты
Важно запускать все тесты в вашем репозитории для любых изменений, предложенных участниками. Выполнение тестов для каждого запроса на включение снижает вероятность появления регрессий и других ошибок в вашем коде и обеспечивает более высокий уровень качества кода, слитого с защищенной ветвью. Если вам интересно узнать больше о тестировании, ознакомьтесь с этой статьей для ускоренных курсов по основам модульного тестирования.
Чтобы настроить проверку состояния, которая использует GitHub Actions для запуска ваших тестов, создайте файл .github/workflows/ci.yml
. Ниже приведена суть рабочего процесса, который будет запускать тесты для приложения Node.js:
Если вы не работаете с Node.js, вам придется изменить ci.yml
для работы с вашей платформой. Вот несколько ссылок, которые описывают, как запускать тесты с помощью GitHub Actions на других платформах: .NET, Python, Ruby, Swift и Java.
Чтобы запросить чистый тестовый прогон перед объединением запроса на вытягивание, вернитесь на страницу Настройки вашего репозитория. Установите флажок рядом с пунктом Требовать проверки статуса перед объединением. Найдите ci
в поле ввода Поиск проверок состояния за последнюю неделю для этого хранилища и щелкните результат поиска, чтобы включить проверку состояния:
Хороший! Если вы открываете запрос на вытягивание, вы должны заметить, что кнопка слияния не станет зеленой, пока не будут завершены проверки статуса и запрос на вытягивание не будет проверен:
Want to Connect? If you found the information in this tutorial useful please subscribe on Medium, follow me on GitHub, and/or subscribe to my YouTube channel.