Skitflow
Code Review

Настройка Code Review в self-hosted

Настройте воркеры Code Review, GitHub App, GitLab и Gitea/Forgejo в self-hosted Skitflow.

В self-hosted Code Review веб-сервис принимает callback-запросы и вебхуки, а отдельный воркер выполняет ревью и задачи Code Intelligence. Оба сервиса должны использовать общие основную базу данных, Redis и учётные данные Code Review.

Включение воркера

Для новой установки через скрипт запустите install.sh с SKITFLOW_CODE_REVIEW_ENABLED=1. Скрипт развернёт отдельный сервис skitflow-code-review-worker, но не настроит провайдеров и не включит флаги организации.

Задайте на воркере SKITFLOW_CODE_REVIEW_WORKER_ENABLED=true. Если переменная отсутствует или имеет другое значение, запросы будут попадать в очередь, но ревью не запустятся. Не меняйте без миграции SKITFLOW_QUEUE_PREFIX; значение по умолчанию — skitflow.

Укажите стабильный публичный HTTPS-адрес в BETTER_AUTH_URL (SITE_URL используется как резервный) и убедитесь, что провайдеры могут отправлять на него вебхуки. После смены учётных данных перезапустите веб-сервис и воркер.

Сетевая политика PAT-провайдеров

GitLab и Gitea/Forgejo используют заданные оператором базовые URL и токены. Исходящие запросы управляются переменными:

ПеременнаяSelf-hosted по умолчаниюПоведение
GIT_PROVIDER_OUTBOUND_POLICYoffoff разрешает приватные, loopback, link-local и служебные адреса. strict блокирует их. Неизвестное значение молча заменяется дефолтом развёртывания (off в self-hosted, strict в cloud).
GIT_PROVIDER_REQUIRE_HTTPSfalseЗначение true отклоняет базовые URL с http://.

Диалоги GitLab и Gitea всегда предупреждают об http://: токен передаётся без шифрования в каждом запросе. HTTP остаётся доступен, если это разрешено развёртыванием. Тело ответа провайдера не попадает в клиентскую ошибку; подробности удалённого хоста смотрите в серверных логах.

Сохраняйте self-hosted-дефолты только для намеренного доступа к приватным провайдерам. Используйте HTTPS и strict, если пользователи не должны иметь доступ к приватной сети control plane.

GitHub App

Создайте отдельный GitHub App для Code Review. Не используйте OAuth-приложение источников развёртывания.

  1. Укажите домашнюю страницу Skitflow, Setup URL <SKITFLOW_ORIGIN>/api/code-review/github/callback и Webhook URL <SKITFLOW_ORIGIN>/api/code-review/github/webhook.
  2. Выдайте read-only права Metadata и Contents, а также read/write права Pull requests и Issues. Также выдайте read/write право Checks — Skitflow создаёт и обновляет check run skitflow-review для каждого pull request; без этого права check run просто не создаётся, а ревью всё равно выполняются.
  3. Подпишитесь на события Pull request, Installation, Installation repositories, Push, Issue comment и Pull request review comment. Push-события запускают переиндексацию Code Intelligence при изменении default branch; два события с комментариями запускают команды бота прямо в PR (например, повторный запуск ревью или объяснение находки через комментарий).
  4. Настройте на веб-сервисе и воркере:
SKITFLOW_CODE_REVIEW_GITHUB_APP_ID="123456"
SKITFLOW_CODE_REVIEW_GITHUB_APP_SLUG="my-skitflow-code-review"
SKITFLOW_CODE_REVIEW_GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\\n...\\n-----END RSA PRIVATE KEY-----"
SKITFLOW_CODE_REVIEW_GITHUB_BOT_LOGIN="my-skitflow-code-review[bot]"
SKITFLOW_CODE_REVIEW_GITHUB_WEBHOOK_SECRET="<отдельный-случайный-секрет>"
SKITFLOW_CODE_REVIEW_GITHUB_STATE_SECRET="<другой-случайный-секрет>"
SKITFLOW_CODE_REVIEW_WORKER_ENABLED=true

Используйте независимые стойкие секреты для вебхука и state. После перезапуска включите code_review.enabled и code_review.github в Dashboard → Settings → Code Review → Feature availability. Установите App, синхронизируйте репозитории, свяжите репозиторий с проектом и запустите ревью недрафтового PR.

GitLab

  1. Создайте PAT отдельного bot-аккаунта с правом api.
  2. Включите code_review.enabled и code_review.gitlab.
  3. Нажмите Connect GitLab на странице Code Review проекта и укажите URL инстанса, PAT и необязательный путь группы.
  4. Включайте Skip TLS verification только для исключительного self-signed инстанса, когда нельзя настроить доверенный CA.
  5. Синхронизируйте репозитории и включите Code Review для нужных проектов.

Skitflow создаёт групповой вебхук для подключения группы или отдельные вебхуки проектов для membership-подключения. Не создавайте пересекающиеся group- и membership-подключения одного инстанса. GitLab не отправляет событие ready_for_review: перевод merge request из draft в ready не запускает ревью, пока вы не запустите его вручную или не отправите новый коммит.

Gitea и Forgejo

Создайте токен отдельного bot-аккаунта с read/write scopes для репозиториев и организации. Включите code_review.enabled и code_review.gitea, нажмите Connect Gitea, укажите базовый URL, токен и необязательную организацию, затем синхронизируйте репозитории. Применяются те же правила HTTP-предупреждения, исключения TLS, исходящей политики и очистки клиентских ошибок.

Проверка установки

Откройте или обновите недрафтовый pull/merge request либо нажмите Run review. Убедитесь, что запуск вышел из состояния queued и провайдер получил итог или inline-комментарии. Если запуск остаётся в очереди, проверьте точное значение true у переключателя воркера и доступ воркера к Redis. При ошибках подключения смотрите серверные логи: тело удалённой ошибки намеренно не показывается в UI.

Настройка concurrency, миграции очередей, метрик, бюджетов, retention и хранилища артефактов описана в разделе Масштабирование и лимиты Code Review.

On this page