Search
Write a publication
Pull to refresh

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

Reading time2 min
Views3.1K

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 запустил функцию правил в режиме бета-тестирования. Просматривать список правил может любой пользователь с правами на чтение, а менять — только редакторы и владелец.

Tags:
Hubs:
Total votes 11: ↑6 and ↓5+6
Comments7

Other news