Русский

Проверка запросов на слияние GitLab с помощью Codex

Настройте проверку кода для запросов на слияние GitLab и запрашивайте проверки с помощью @codex review.

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

Поддержка GitLab находится на этапе бета-тестирования и доступна во всех тарифных планах ChatGPT. Интеграция Codex работает в облаке Codex. Элементы управления репозиторием в стиле GitHub в классическом приложении, например Create pull request, в эту бета-версию не входят.

Перед началом работы

Убедитесь, что у вас есть:

Настройка проверки кода Codex

Настройка подключения GitLab и учётной записи Codex для проверок

Для GitLab.com подключите свою учётную запись GitLab в Codex после того, как подключите GitLab в ChatGPT. Для собственного экземпляра GitLab или GitLab Dedicated каждый рецензент должен подключиться после публикации шаблона администратора рабочей области.

Для собственного экземпляра GitLab или GitLab Dedicated откройте Codex CloudSettingsConnectors. Администратор рабочей области может разрешить Codex создать служебную учётную запись или сохранить существующий персональный токен доступа служебной учётной записи.

Создание учётной записи с помощью Codex

В разделе Codex CloudSettingsConnectors выберите приложение для вашего собственного хоста GitLab или GitLab Dedicated → выберите Set up service accountCreate a service account. Администратор рабочей области, выполняющий настройку, должен иметь административный доступ к экземпляру GitLab. Выберите Selected groups или Selected projects only, затем укажите, где должен работать Codex, и создайте учётную запись. Вариант с группами предоставляет доступ Developer к каждой выбранной группе, наследуемый её проектами и подгруппами; вариант с проектами предоставляет доступ Developer только к выбранным отдельным проектам. Codex создаст служебную учётную запись экземпляра ChatGPT Codex Connector с персональным токеном доступа, имеющим область действия api.

Использование существующей учётной записи

В GitLab создайте или выберите служебную учётную запись и предоставьте ей доступ Developer только в тех группах или проектах, где должен работать Codex. На странице Service accounts выберите учётную запись → Manage access tokensAdd new token, чтобы создать персональный токен доступа с областью действия api и сроком действия не менее 30 дней. Вернувшись в Codex, выберите Use an existing service account, вставьте токен и выберите Save token. При сохранении токен шифруется и больше никогда не отображается.

Управление токеном служебной учётной записи

Администраторы рабочей области могут управлять служебной учётной записью в разделе Codex CloudSettingsConnectors. Для учётной записи, созданной Codex, администраторы могут отозвать текущий токен и создать новый. Для существующей учётной записи администраторы могут заменить или удалить сохранённый токен в Codex и при необходимости отдельно отозвать его в GitLab. Codex не сможет реагировать на события GitLab, пока не будет настроен действительный токен.

Выбор способа передачи событий GitLab в Codex

Создание окружения проекта для задач программирования или настройки конкретного проекта

В разделе Codex CloudSettingsEnvironments выберите проект GitLab и создайте окружение проекта, если хотите, чтобы Codex писал или выполнял код для этого проекта — например, редактировал файлы, фиксировал изменения или отправлял обновления в ветку запроса на слияние, — либо если проверка зависит от секретов конкретного проекта, доступа к сети или команд настройки.

Для включения проверок Codex в GitLab.com также требуется окружение проекта.

При создании окружения включите Enable Codex activity from GitLab, чтобы установить вебхук проекта, который передаёт Codex события запросов на слияние, комментариев и задач. Для создания вебхука проекта требуются права Maintainer или Owner, административный доступ либо пользовательская роль, позволяющая управлять вебхуками проекта. Для подписанных вебхуков проектов и групп требуется GitLab 19.0 или новее. В собственном GitLab 19.0 убедитесь, что флаг функции webhook_signing_token включён; он включён по умолчанию и был удалён в GitLab 19.1.

Включение событий для проверок Codex в проектах группы GitLab

Для собственного экземпляра GitLab или GitLab Dedicated администраторы рабочей области могут открыть EnvironmentsGitLab activityManage groups, чтобы включить проверки Codex во всей группе и её подгруппах. Codex установит вебхук группы, охватывающий проекты во всей этой группе. Подключённый пользователь GitLab должен быть владельцем группы, а для вебхуков групп требуются GitLab Premium или Ultimate и GitLab 19.0 или новее.

События группы позволяют выполнять проверки кода, но не создают окружения проектов. Чтобы выполнять задачи программирования, запускаемые из GitLab, например редактирование файлов, выполнение команд, фиксацию изменений или отправку обновлений в запрос на слияние, создайте окружение проекта.

Настройка политик проверки кода

Настройте политики проверки кода в настройках проверок Codex. Выберите политику репозитория: Review my MRs, Review team MRs, Review all MRs или Follow personal. Затем выберите момент запуска проверок: On MR open, On every push или Smart Trigger (Experimental). Настройки репозитория могут переопределять личные настройки по умолчанию.

Запрос проверки Codex

  1. Упомяните @codex review в комментарии к запросу на слияние.
  2. Дождитесь, пока Codex отреагирует (👀) и опубликует проверку.

Codex публикует обсуждения и заметки GitLab в запросе на слияние так же, как это сделал бы коллега. По умолчанию проверки, запрошенные вручную, могут включать замечания уровней P0, P1 и P2, тогда как автоматические проверки сосредоточены на замечаниях уровней P0 и P1.

Включение автоматических проверок

Чтобы автоматически проверять подходящие запросы на слияние, включите Automatic reviews в настройках Codex, выберите политику репозитория GitLab и укажите триггер: On MR open, On every push или Smart Trigger (Experimental). Codex запускается без комментария @codex review, когда событие запроса на слияние соответствует этой политике и триггеру.

События GitLab должны быть включены через вебхук проекта или вебхук вышестоящей группы. Для собственного экземпляра GitLab или GitLab Dedicated настроенная служебная учётная запись также должна иметь доступ для записи в проект. Codex использует настроенное окружение проекта при его наличии. Если события уже включены для вышестоящей группы, вложенные проекты наследуют этот охват.

Настройка предмета проверок Codex

Codex ищет в вашем репозитории файлы AGENTS.md и следует применимым правилам проверки кода. Добавьте раздел ## Code Review Rules в файл, ближайший к коду, на который распространяются правила. При необходимости используйте заголовки ###, чтобы группировать связанные проверки.

Например, сервис отчётности об экспериментах может не допускать, чтобы поведение после воздействия изменяло сравнительную когорту:

## Code Review Rules

### Experiment cohorts

- Do not filter treatment comparisons on post-exposure behavior, including conversion or retention.
  Safe path: build cohorts from assignment or exposure; report conversion as an outcome.

Поместите правила для всего репозитория в корневой файл AGENTS.md, а правила для конкретного сервиса — во вложенный файл, например services/experiment_reporting/AGENTS.md. Codex применяет корневые и более специализированные указания, распространяющиеся на каждый изменённый файл, поэтому несвязанные изменения не требуют контекста конкретного сервиса.

Начните с двух или трёх кратких правил, описывающих проверки, которые рецензентам часто приходится пояснять. Полезные правила:

  • Сосредоточьтесь на значимом поведении, характерном для репозитория. Опишите ограничение совместимости, границу данных или небезопасный побочный эффект, который следует отметить, а также объясните, почему это важно.
  • Укажите безопасный путь или исключение. Предоставьте Codex достаточно контекста, чтобы отличить реальную проблему от ожидаемого поведения.
  • Делайте правила узкими и устойчивыми. Отдавайте предпочтение результатам, а не именам функций, которые могут измениться, и размещайте указания рядом с кодом, к которому они относятся.
  • Оставьте механические проверки для CI. Не включайте форматирование, линтинг и другие детерминированные проверки в правила проверки кода.

Откройте репрезентативный запрос на слияние и запросите проверку с помощью @codex review. Уточняйте правила с учётом полученных замечаний и отзывов, а также сужайте или удаляйте указания, создающие лишний шум.

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

Чтобы однократно задать предмет проверки, добавьте его в комментарий к запросу на слияние:

@codex review for issues in the database migration

Работа с замечаниями проверки

Для исправления замечаний проверки требуется настроенное окружение проекта; события группы сами по себе поддерживают проверки, но не позволяют выполнять задачи программирования. Если у проекта есть окружение, попросите Codex исправить проблему в том же запросе на слияние, оставив ещё один комментарий:

@codex fix the P1 issue

Codex запускает облачный чат, используя запрос на слияние как контекст, и может отправить исправление обратно в ветку, если у него есть необходимые разрешения.

Постановка других задач для Codex

Для других задач программирования также требуется настроенное окружение проекта; события группы сами по себе поддерживают только проверки. Если вы упомянете @codex в комментарии с любым содержимым, кроме review, Codex запустит облачный чат, используя ваш запрос на слияние как контекст.

@codex fix the CI failures

Устранение неполадок при проверке кода

Если Codex не реагирует или не публикует проверку:

  • Убедитесь, что выбрано нужное приложение GitLab; если вы используете настройку для конкретного проекта, убедитесь, что для проекта задано нужное облачное окружение Codex.
  • Убедитесь, что события включены для проекта или вышестоящей группы. В GitLab откройте WebhooksRecent events и убедитесь, что события запросов на слияние и заметок доставляются успешно.
  • Для собственного экземпляра GitLab или GitLab Dedicated убедитесь, что вебхук проекта или группы подписан, проверка SSL включена, а используется GitLab 19.0 или новее. В собственном GitLab 19.0 убедитесь, что флаг функции webhook_signing_token включён; восстановите вебхуки, автоматически отключённые после сбоев.
  • Для собственного экземпляра GitLab или GitLab Dedicated убедитесь, что персональный токен доступа существующей служебной учётной записи активен и имеет область действия api. Если служебную учётную запись создал Codex, убедитесь, что она правильно настроена в настройках коннектора Codex и что проект или группа включены.
  • Для собственного экземпляра GitLab или GitLab Dedicated убедитесь, что служебная учётная запись рабочей области — а не только подключённый пользователь GitLab — имеет доступ Developer к проекту или родительской группе, чтобы Codex мог публиковать проверки и реакции. Членство наследуется; включение событий и доступ служебной учётной записи настраиваются отдельно.
  • Убедитесь, что Code review или Automatic reviews включены и запрос на слияние соответствует политике и триггеру репозитория.
  • Используйте @codex review.