Настройка вебхука репозитория
Инструкции PAT/OAuth на этой странице используют вебхуки отдельных репозиториев. Подключения GitHub App используют единый вебхук и настраиваются через диалог приложения.
Repovio может получать подписанные веб-перехватчики для синхронизации отслеживаемого репозитория раньше обычного интервала опроса. Он никогда не создает, не обновляет, не удаляет и не тестирует веб-перехватчики через API-интерфейсы поставщика. Администратор вручную настраивает каждый веб-перехватчик репозитория в GitHub, GitLab, Forgejo или Gitea.
Откройте Репозитории, выберите отслеживаемый репозиторий и используйте его карточкуВебхук репозитория. На карточке отображается URL-адрес обратного вызова для конкретного репозитория, генерируется или принимается секрет подписи и сообщается о последней принятой доставке. Repovio никогда не отправляет эту конфигурацию провайдеру.
Вебхуки — это оптимизация, а не источник истины. Подписанные полезные данные должны идентифицировать репозиторий, выбранный URL-адресом обратного вызова. Затем Repovio считывает текущие данные через настроенный адаптер поставщика, доступный только для чтения. Принятые поставки ставятся в очередь на надежную синхронизацию репозитория; доставки, полученные в течение 15 секунд, объединяются. Резервный интервал опроса по умолчанию составляет 30 минут.
Настройте вебхук репозитория
- Добавьте репозиторий в Repovio и откройте его карточку Вебхук репозитория.
- Скопируйте URL-адрес обратного вызова.
- Создайте уникальный секрет подписи с высокой энтропией или вставьте точный токен подписи, предоставленный поставщиком. Никогда не используйте повторно токен доступа или секрет другого репозитория.
- Сохраните секрет. Repovio шифрует его с помощью AES-256-GCM и никогда не возвращает его через API.
- Настройте URL-адрес обратного вызова и секрет в настройках провайдера этого репозитория.
- Оставьте включенной проверку TLS и отправьте тестовую доставку.
Стабильные обратные вызовы используют /api/webhooks/<provider>/<repository-id>. Также доступны версии обратных вызовов
/api/v1/webhooks/<provider>/<repository-id>. URL-адреса обратного вызова учетной записи поставщика из Repovio 0.2.9 и
более ранних версий больше не принимаются. После обновления воссоздайте каждый веб-перехватчик с обратным вызовом
репозитория и новым секретом репозитория.
Успешные доставки возвращают HTTP 202 с { "accepted": true }. Идентификаторы повторной доставки поставщика
возвращают { "accepted": true, "duplicate": true } и не ставят в очередь другую синхронизацию. Неизвестные или
отключенные репозитории, отключенные учетные записи поставщиков, отсутствующие секреты, недействительные подписи,
несовпадающие идентификаторы репозиториев поставщиков и отсутствующие идентификаторы доставки отклоняются без раскрытия
деталей конфигурации.
Синхронизация в очереди сохраняется после перезапуска API. Несколько экземпляров используют аренду базы данных и не синхронизируют одну и ту же учетную запись поставщика одновременно. Заголовки ограничения скорости задерживают работу затронутой учетной записи, а ограниченные повторы обрабатывают временные сбои.
GitHub Действия
- Откройте Настройки → Вебхуки репозитория и выберитеДобавить вебхук.
- Используйте
https://repovio.example.com/api/webhooks/github/<repository-id>в качестве URL-адреса полезной нагрузки. - Выберите
application/json, вставьте секрет репозитория и подпишитесь на Выполнения рабочего процесса (workflow_run). - Оставьте включенной проверку SSL и сохраните вебхук.
Repovio проверяет X-Hub-Signature-256 по необработанному телу и использует X-GitHub-Delivery для идемпотентности.
См. документация по событию веб-перехватчика GitHub.
трубопроводы GitLab
- Откройте Настройки → Вебхуки проекта и выберитеДобавить новый вебхук.
- Используйте
https://repovio.example.com/api/webhooks/gitlab/<repository-id>в качестве URL-адреса. - Создайте токен подписи и сохраните его полное значение, включая
whsec_, на карте репозитория Repovio. - Выберите События конвейера, включите проверку SSL, сохраните и отправьте тестовую доставку.
Repovio проверяет подписи стандартных веб-перехватчиков HMAC-SHA256 и предпочитает webhook-id для идемпотентности.
Устаревшие заголовки X-Gitlab-Token и X-Gitlab-Event-UUID по-прежнему поддерживаются для более старых экземпляров.
См. GitLab документация вебхука.
Forgejo Действия
- Откройте Настройки → Вебхуки репозитория и добавьте собственный вебхукForgejo JSON.
- Используйте
https://repovio.example.com/api/webhooks/forgejo/<repository-id>в качестве целевого URL-адреса. - Вставьте секрет репозитория и выберите Push event плюс все доступные события Actions.
- Оставьте включенной проверку TLS и сохраните вебхук.
Repovio проверяет X-Forgejo-Signature и использует X-Forgejo-Delivery для идемпотентности. Заголовки, совместимые с
Gitea, по-прежнему принимаются для совместимости с Forgejo. См. Forgejo
документация вебхука.
Gitea Действия
- Откройте Настройки → Веб-перехватчики репозитория и добавьте собственный веб-перехватчикGitea JSON.
- Используйте
https://repovio.example.com/api/webhooks/gitea/<repository-id>в качестве целевого URL-адреса. - Вставьте секрет репозитория и выберите Push event плюс все доступные события рабочего процесса.
- Оставьте включенной проверку TLS и сохраните вебхук.
Repovio проверяет X-Gitea-Signature по необработанному телу и использует X-Gitea-Delivery для идемпотентности. См.
Gitea документация вебхука.
Устранение неполадок
401означает, что Repovio не удалось проверить репозиторий, тип поставщика, секрет, подпись, идентификатор хранилища полезных данных или идентификатор доставки. Подтвердите UUID репозитория обратного вызова и точный секрет.202сduplicate: trueожидается, когда поставщик повторяет попытку доставки.- Успешная доставка запускает синхронизацию только для чтения; он никогда не изменяет рабочий процесс поставщика.
- Проверьте
/api/healthна предмет постоянного статуса синхронизации поставщика. - Установите
SCHEDULER_SYNC_INTERVAL_SECONDS=1800для 30-минутного отката. —SCHEDULER_ENABLED=falseсохраняет запросы в очереди, но приостанавливает постановку в очередь и обработку.