Skip to content
Exlogare

Режим webhook GitLab и Bitbucket

Событийная интеграция для сред, где OAuth нежелателен.

Webhook-режим рекомендован для сред, где OAuth нежелателен или запрещён политикой безопасности.

Как это работает

  1. Регистрируете один webhook в проекте или группе.
  2. GitLab шлёт Pipeline events и Job events на https://api.exlogare.net/webhook/gitlab.
  3. Exlogare проверяет общий секрет (заголовок X-Gitlab-Token) и ставит пайплайн в очередь.
  4. На падении Exlogare асинхронно подтягивает логи через API GitLab и прогоняет RCA. Сам лог обрабатывается в памяти и удаляется — мы храним только итоговый разбор и метаданные маршрутизации.

Настройка

Быстрый путь — через панель Exlogare:

  1. Откройте Integrations → GitLab → New webhook.
  2. Скопируйте URL и секрет, которые покажет мастер.
  3. В GitLab: Settings → Webhooks в нужном проекте (или Group → Hooks для всей группы).
  4. Вставьте URL, положите секрет в поле Secret token, отметьте чекбоксы Pipeline events и Job events.
  5. Сохраните — GitLab сразу отправит тестовый ping.

Если подключаете проект через OAuth или передаёте Personal Access Token (PAT) в мастере, webhook регистрируется автоматически: шаги 3–5 делать не нужно.

Какие события нужны

  • Pipeline events — даёт сам факт падения и ссылку на pipeline.
  • Job events — нужны для точной ссылки на упавший job и извлечения логов.

Merge Request events, Push events и прочие отмечать не нужно — они только добавляют шум на вашем GitLab.

Проверка доставки

В GitLab на странице хука есть Recent deliveries: там видно статусы доставок, заголовки и тело ответа. Успешный приём — 202 Accepted. 404 обычно означает, что проект не привязан к коннектору в Exlogare — откройте Integrations → GitLab и убедитесь, что проект в списке активных.

Bitbucket Data Center / Server (только webhook) {#bitbucket-dc}

В Bitbucket Data Center / Server OAuth не поддерживается, поэтому он всегда работает в webhook-режиме. Сценарий зеркалит GitLab:

  1. Откройте Integrations → Bitbucket → New connection и выберите Self-hosted. Укажите базовый URL, project key и repo slug — мастер вернёт webhook URL (https://api.exlogare.net/webhook/bitbucket) и свежесгенерированный секрет.
  2. В Bitbucket: Repository settings → Webhooks → Create webhook. Вставьте URL в поле URL, секрет — в Secret, отметьте Repository events → Build status updated, оставьте Active, сохраните.
  3. Bitbucket подписывает тело HMAC-SHA256 и кладёт в X-Hub-Signature: sha256=…. Exlogare проверяет подпись, парсит событие repo:build_status_updated и ставит упавший ран в очередь анализа. Успешная доставка — 202 Accepted.

Событие repo:build_status_updated генерирует ваш внешний CI (Jenkins / Bamboo / TeamCity), когда публикует статус билда в Bitbucket через Build Status REST API. Ссылка на pipeline в комментарии указывает на job-страницу этого внешнего CI (мы сами не подтягиваем логи на DC).

Важно: DC < 7.4 не отправляет событие Build status updated. Обновите DC до 7.4+ или используйте ручной endpoint POST /api/analyze.

Если у вас под рукой PAT с правами Project admin — вставьте его в мастер, и мы зарегистрируем webhook через DC REST API. Иначе используйте чек-лист выше.

Bitbucket Cloud в режиме webhook {#bitbucket-cloud}

Bitbucket Cloud также поддерживает webhook-only, хотя OAuth удобнее. Настройка такая же, как для DC, кроме:

  • Событие — repo:commit_status_updated (вместо repo:build_status_updated).
  • Регистрация в Repository settings → Webhooks в Bitbucket Cloud.
  • HMAC по-прежнему X-Hub-Signature (SHA-256).