GitHub и GitLab
Оба провайдера подключаются одним способом — через входящий вебхук Kizora. Отдельной авторизации в GitHub или GitLab не требуется: Kizora ничего не запрашивает у них сама, она принимает то, что они присылают.
Что поддерживается
| Событие | GitHub | GitLab |
|---|---|---|
| Коммиты | push | Push Hook |
| Пул-реквесты и merge-request | pull_request | Merge Request Hook |
| Задачи | issues | Issue Hook |
| Релизы | release | Release Hook |
| Выкладки | deployment_status | Pipeline Hook |
Остальные события провайдера принимаются как «прочее».
Как подключить GitHub
- В Kizora:
/вебхук создать, источник — GitHub, укажите канал. Скопируйте адрес и секрет из личных сообщений. - В репозитории: Settings → Webhooks → Add webhook.
- Payload URL — адрес из шага 1.
- Content type —
application/json. - Secret — секрет из шага 1.
- Выберите события: push, pull requests, issues, releases.
- Сохраните и нажмите Redeliver на тестовой доставке, чтобы проверить.
GitHub подписывает тело заголовком X-Hub-Signature-256 и присылает идентификатор доставки в X-GitHub-Delivery — Kizora использует его для защиты от повторов.
Как подключить GitLab
- В Kizora:
/вебхук создать, источник — GitLab. - В проекте: Settings → Webhooks.
- URL — адрес из шага 1.
- Secret token — секрет из шага 1.
- Отметьте нужные триггеры.
- Сохраните и нажмите Test.
GitLab присылает токен в заголовке X-Gitlab-Token, а идентификатор доставки — в Idempotency-Key или X-Gitlab-Event-UUID.
Ограничения
- Kizora принимает события, но не ходит в API GitHub сама: списка репозиториев, статусов сборки по запросу и комментариев отсюда нет.
- Тело запроса — до 256 КБ. Очень большие push-события провайдер обрезает сам.
- Отметка времени должна быть свежей: расхождение больше минуты — отказ.
Проверка
После тестовой доставки откройте /вебхук журнал. Там будет видно, что пришло и что было отвергнуто. Значения статусов — Статусы доставки.
Частые проблемы
- GitHub показывает 401 или 403. Секрет в репозитории не совпадает с секретом Kizora — перевыпустите и укажите заново.
- Приходит, но не публикуется. Смотрите статус: «не показывается» — настройка, «отказ Discord» — права бота в канале.
- Дубликаты. Их не будет: повтор с тем же идентификатором доставки отмечается как дубликат.