GitHub выпустил правила для защиты веток и согласованности кода в репозиториях

от автора

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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *