В Code представлен набор правил для контроля за соблюдением определённых политик при отправке кода в Git. Эти правила помогают поддерживать целостность репозитория, повышать качество кода и обеспечивать соответствие стандартам безопасности вашей организации.

Доступные правила

  • Проверять email коммитера

    Адрес электронной почты коммитера должен быть подтвержден в профиле Code.

  • Запретить удаление тегов

    Тег нельзя удалить через git push. Удаление через веб-интерфейс доступно.

  • Проверка зарегистрированного пользователя

    Автор коммита должен быть пользователем Code.

  • Блокировать утечки секретов

    Попытка закоммитить файлы, подпадающие под следующие шаблоны, будет отклонена:

    • aws/credentials,
    • ssh/personal_rsa, ssh/personal_dsa, ssh/personal_ed25519, ssh/personal_ecdsa, ssh/personal_ecdsa_sk, ssh/personal_ed25519_sk,
    • ssh/server_rsa, ssh/server_dsa, ssh/server_ed25519, ssh/server_ecdsa, ssh/server_ecdsa_sk, ssh/server_ed25519_sk,
    • id_rsa, id_dsa, id_ed25519, id_ecdsa, id_ecdsa_sk, id_ed25519_sk,
    • файлы с расширением .pem или .key,
    • файлы .history или _history,
    • файлы с расширением .keystore или .jks,
    • keystore.p12, keystore.pfx.
  • Коммит должен быть подписан GPG

    Разрешены только коммиты, подписанные GPG-ключом. Изменения через веб-интерфейс будут отклоняться, если для веб-UI не настроена подпись GPG.

  • В сообщении коммита должен присутствовать DCO (Сертификат происхождения разработчика)

    Коммиты должны включать строку «Signed-off-by» для DCO. При включении этого правила функция отмены изменений для запросов на слияние в веб-интерфейсе будет недоступна, поскольку автоматически сгенерированное сообщение о коммите не содержит sign-off.

  • Проверять имя коммитера

    Имя коммитера должно совпадать с именем профиля в Code.

  • Регулярное выражение для сообщения коммита

    Коммиты должны соответствовать указанному шаблону регулярного выражения. Пустое поле отключает правило.

  • Регулярное выражение для email автора коммита

    Email автора должен совпадать с указанным регулярным выражением. Пустое поле отключает правило.

  • Регулярное выражение для имени файла

    Имена файлов должны соответствовать указанному шаблону регулярного выражения. Пустое поле отключает правило.

  • Регулярное выражение для имени ветки

    Имя ветки должно совпадать с указанным регулярным выражением. Пустое поле отключает правило.

  • Регулярное выражение для недопустимых сообщений коммитов

    Если сообщение соответствует указанному шаблону регулярного выражения, коммиты будут отклонены. Пустое поле отключает правило.

  • Максимальный размер файла (МБ)

    Файлы, размер которых превышает указанный предел (в мегабайтах), будут отклонены. Чтобы отключить правило, установите значение 0.

Настройка правил отправки изменений

Чтобы настроить правила отправки изменений, откройте страницу проекта и перейдите в раздел «Настройки» → «Репозиторий» → «Правила отправки изменений».

Настройка правил доступна пользователям с ролью Maintainer и Owner.

Настройка правил на уровне группы или инстанса

Чтобы получить доступ к настройке правил на уровне группы, откройте страницу группы и выберите «Настройки» → «Репозиторий» → «Правила отправки изменений». Настройка на уровне группы доступна пользователям с ролью Owner.

Для настройки на уровне инстанса нажмите «Admin» → «Настройки» → «Репозиторий» → «Правила отправки изменений». Эта настройка доступна только администраторам.

При изменении правила на уровне инстанса новые значения будут применены ко всем правилам в проектах и группах.

При изменении правила на уровне группы новые значения будут применены ко всем нижестоящим группам и их проектам.

Правила, заданные на уровне группы или инстанса, используются как настройки по умолчанию для проектов. При создании проекта будут включены те правила, которые заданы в его группе или на уровне инстанса (если проект создан в пользовательском пространстве).

Запрет на переопределение правил

Можно запретить переопределение правил в нижестоящих проектах и группах. Для этого снимите галочку «Разрешить переопределять на уровне группы/проекта». Такое правило нельзя изменять в нижестоящих группах\проектах. На уровне инстанса эта настройка применяется ко всем группам и проектам.

Примеры:

  1. Если на уровне группы включить правило «Проверять email автора коммита» и запретить его переопределение, это правило будет включено во всех проектах группы и подгрупп, без возможности его отключить.

  2. Если на уровне группы выключить это же правило и запретить его переопределение, оно будет отключено во всех проектах группы и подгрупп, также без возможности изменения.
  3. Если разрешено переопределение правила, оно будет автоматически обновляться при изменениях на уровне предка, но в нижестоящих группах и проектах его можно будет изменить.

Иерархия применения выглядит так:
Инстанс → Группа → Подгруппа → Проект