Используйте правила защиты веток, чтобы обеспечить качественный вклад в ваши репозитории.

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.