GitHub опубликовал простые правила, которые обеспечат защиту веток и согласованность кода в общедоступных репозиториях. Они позволят защитить несколько шаблонов веток, используя один набор правил, пропускать проверки состояния без дополнительных разрешений, а администраторам — обходить пулл-реквесты, по-прежнему требуя выполнения важных проверок CodeQL.
Правила доступны на обзорной странице, в Git и GitHub CLI.
В Twilio включили эти правила, сохранив автономию инженерных команд.
Клиенты GitHub Enterprise Cloud также могут применять их для всех или части своих репозиториев в организации. Изначально правила можно опробовать в режиме оценки. Аналитика позволит отследить, что произойдёт при отклонении устаревших обзоров или включении истории линейного слияния (linear merge).
Согласованность обеспечат новые правила метаданных, которые позволят управлять именами веток, сообщениями коммитов и адресами электронной почты контрибьюторов.
Правила репозитория помогут сохранить качество кода, предотвратить ошибки и улучшить совместную работу. Но для начала нужно чётко сформулировать цели репозитория и ограничить количество правил, отмечают в GitHub.
Рабочий репозиторий должен включать несколько хорошо известных веток, которые будут требовать рецензируемые пулл-реквесты, использовать CI/CD для запуска модульных тестов и контроля выпусков, а также поддерживать определённые пространства имён с минимальными ограничениями. Всё это можно реализовать с помощью REST API.
POST /repos/{owner}/{repo}/rulesets { "name": "team rules-ex-1", "target": "branch", "enforcement": "active", "conditions": { "ref_name": { "include": [ "~DEFAULT_BRANCH", "refs/heads/feature-*" ], "exclude": [ "refs/heads/dev-*" ] } }, "rules": [ { "type": "pull_request", "parameters": { "require_code_owner_review": false, "require_last_push_approval": true, "dismiss_stale_reviews_on_push": false, "required_approving_review_count": 2, "required_review_thread_resolution": false } }, { "type": "required_status_checks", "parameters": { "required_status_checks": [ { "context": {status check context name}", "integration_id":{integration ID that this status check must originate from.} } ], "strict_required_status_checks_policy": false } }, { "type": "deletion" }, { "type": "non_fast_forward" } ] }
Использование набора правил в режиме оценки позволяет моделировать потенциальные сценарии, требующие исключений.
POST /orgs/{org}/rulesets { "name": " + ", "target": "branch", "source_type": "Organization", "enforcement": "active", "bypass_actors": [ { "actor_id": 1, "actor_type": "OrganizationAdmin", "bypass_mode": "pull_request" } ], "conditions": { "repository_name": { "exclude": [], "include": [ "~ALL" ] }, "ref_name": { "exclude": [], "include": [ "~DEFAULT_BRANCH" ] } }, "rules": [ { "type": "deletion" }, { "type": "non_fast_forward" }, { "type": "pull_request", "parameters": { "require_code_owner_review": false, "require_last_push_approval": false, "dismiss_stale_reviews_on_push": false, "required_approving_review_count": 2, "required_review_thread_resolution": false } } ] }
Правила репозитория поддерживают слои (layers).
В апреле GitHub запустил функцию правил в режиме бета-тестирования. Просматривать список правил может любой пользователь с правами на чтение, а менять — только редакторы и владелец.
ссылка на оригинал статьи https://habr.com/ru/articles/750132/
Добавить комментарий