Skip to content
Exlogare

OAuth: GitLab, GitHub и Bitbucket

OAuth-интеграция Exlogare с GitLab, GitHub Actions и Bitbucket.

OAuth подходит, когда нужны короткоживущие токены, автопоиск проектов и централизованное управление. Ниже сначала GitLab, затем GitHub, затем Bitbucket.

Когда использовать OAuth

  • Нужен один клик для подключения и автоматический webhook на каждом проекте.
  • Хочется видеть список проектов тенанта в UI Exlogare, а не вводить пути вручную.
  • Политика безопасности запрещает PAT с широкими правами.

Регистрация OAuth-приложения (self-hosted GitLab)

  1. В GitLab: Admin Area → Applications → New application (для группового приложения — Group → Settings → Applications).
  2. Redirect URI: https://api.exlogare.net/auth/gitlab/callback.
  3. Scopes: api, read_user, read_api.
  4. Сохраните приложение. Скопируйте Application ID и Secret — они понадобятся в мастере Exlogare.

Подключение в панели

  1. Integrations → GitLab → New OAuth connection.
  2. Укажите базовый URL вашего GitLab, Application ID и Secret.
  3. Нажмите Connect и подтвердите доступ в GitLab.

После подтверждения Exlogare обходит ваши проекты, подписывает webhook на Pipeline events и Job events и начинает слушать падения. На планах с поддержкой Hybrid дополнительно включится фоновый опрос с периодом в 60 секунд — подстраховка на случай потери webhook-доставки.

Фоллбэк для gitlab.com

Если подключаете gitlab.com, регистрировать OAuth-приложение не нужно — Exlogare использует платформенное приложение. Просто нажмите Connect with gitlab.com в мастере и авторизуйте доступ.

Отзыв доступа

Любой OAuth-токен можно отозвать из Integrations → GitLab → Connections → Disconnect. После отзыва webhooks, которые Exlogare зарегистрировал через OAuth, остаются в GitLab — удалите их вручную, если не планируете возвращаться.

GitHub {#github}

Для GitHub Actions создайте OAuth App (аналог в GitHub Enterprise в настройках организации):

  1. Callback URL (Authorization callback) — должен совпадать с URL в интерфейсе Exlogare, обычно https://<ваш-api>/api/integrations/github/oauth/callback (тот же github_oauth_redirect_uri на сервере).
  2. Scopes — доступ к репозиториям, которые вы хотите анализировать. Для приватных репозиториев обычно нужен scope repo. Нужен и показ подключённого пользователя, например read:user.
  3. Скопируйте Client ID и Client secret. Для GitHub Enterprise на шаге self-hosted укажите базовый URL инстанса и вставьте идентификаторы; для github.com оператор мог уже настроить общее OAuth-приложение.

После авторизации Exlogare подписывается на workflow_run (и при необходимости check_run) для выбранных репозиториев, проверяет X-Hub-Signature-256 и публикует RCA в PR, затем при отсутствии MR — в коммент к коммиту или в issue, по политике feedback.

Отключение: Integrations → GitHub → Connections; «лишние» webhooks в GitHub удалите вручную, если больше не используете Exlogare.

Bitbucket {#bitbucket}

В Bitbucket две разные версии, которые Exlogare обрабатывает по-разному:

  • Bitbucket Cloud (bitbucket.org) — three-legged OAuth через Atlassian, UX как у GitHub: выбираете репозитории, мы регистрируем webhook сами.
  • Bitbucket Data Center / Server — только webhook-режим. OAuth для DC не предусмотрен. Кнопка Connect возвращает webhook URL и общий секрет, плюс необязательное поле PAT, чтобы мастер сам зарегистрировал хук.

OAuth для Bitbucket Cloud

  1. В Bitbucket: Workspace settings → OAuth consumers → Add consumer.
  2. Callback URL должен совпадать с URL в интерфейсе Exlogare, обычно https://<ваш-api>/api/integrations/bitbucket/oauth/callback (значение настройки bitbucket_oauth_redirect_uri).
  3. Permissions / Scopes — отметьте все перечисленные права до сохранения, иначе Bitbucket вернёт error=invalid_scope:
    • Account: Read
    • Workspace membership: Read
    • Projects: Read
    • Repositories: Read
    • Pull requests: Read, Write
    • Webhooks: Read and write
    • Pipelines: Read
  4. Сохраните consumer. Скопируйте Key (= Client ID) и Secret (= Client secret).
  5. В Exlogare откройте Integrations → Bitbucket → New OAuth connection, выберите Cloud, вставьте Key и Secret и нажмите Connect. Подтвердите доступ в Atlassian.

В инсталляциях, где оператор уже задал платформенные OAuth-учётные данные, регистрировать consumer не нужно — кнопка Connect использует общее OAuth-приложение, поля Key / Secret скрыты.

После авторизации Exlogare обходит ваши workspaces, регистрирует webhook repo:commit_status_updated на выбранных репозиториях и запускает RCA. Режимы (webhook / OAuth polling / hybrid) подчиняются той же матрице плана, что и GitLab/GitHub.

Bitbucket Data Center / Server (только webhook)

  1. В Exlogare откройте Integrations → Bitbucket → New connection, выберите Self-hosted.
  2. Вставьте базовый URL вашего DC (например https://bitbucket.example.com), project key и repo slug.
  3. (Опционально) Вставьте Personal Access Token с правами Project admin; мастер тогда сам зарегистрирует webhook. Без PAT мастер вернёт URL и сгенерированный секрет — вы вставите их вручную.
  4. В Bitbucket: Repository settings → Webhooks → Create webhook. Имя Exlogare RCA, URL и Secret из мастера, Repository events → Build status updated, Active, Save.

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

Отозвать любой коннектор можно из Integrations → Bitbucket → Connections. После отзыва webhooks остаются в Bitbucket — удалите их вручную, если не планируете возвращаться.