OAuth: GitLab, GitHub и Bitbucket
OAuth-интеграция Exlogare с GitLab, GitHub Actions и Bitbucket.
OAuth подходит, когда нужны короткоживущие токены, автопоиск проектов и централизованное управление. Ниже сначала GitLab, затем GitHub, затем Bitbucket.
Когда использовать OAuth
- Нужен один клик для подключения и автоматический webhook на каждом проекте.
- Хочется видеть список проектов тенанта в UI Exlogare, а не вводить пути вручную.
- Политика безопасности запрещает PAT с широкими правами.
Регистрация OAuth-приложения (self-hosted GitLab)
- В GitLab: Admin Area → Applications → New application (для группового приложения — Group → Settings → Applications).
- Redirect URI:
https://api.exlogare.net/auth/gitlab/callback. - Scopes:
api,read_user,read_api. - Сохраните приложение. Скопируйте Application ID и Secret — они понадобятся в мастере Exlogare.
Подключение в панели
- Integrations → GitLab → New OAuth connection.
- Укажите базовый URL вашего GitLab, Application ID и Secret.
- Нажмите 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 в настройках организации):
- Callback URL (Authorization callback) — должен совпадать с URL в интерфейсе Exlogare, обычно
https://<ваш-api>/api/integrations/github/oauth/callback(тот жеgithub_oauth_redirect_uriна сервере). - Scopes — доступ к репозиториям, которые вы хотите анализировать. Для приватных репозиториев обычно нужен scope
repo. Нужен и показ подключённого пользователя, напримерread:user. - Скопируйте 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
- В Bitbucket: Workspace settings → OAuth consumers → Add consumer.
- Callback URL должен совпадать с URL в интерфейсе Exlogare, обычно
https://<ваш-api>/api/integrations/bitbucket/oauth/callback(значение настройкиbitbucket_oauth_redirect_uri). - 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
- Сохраните consumer. Скопируйте Key (= Client ID) и Secret (= Client secret).
- В 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)
- В Exlogare откройте Integrations → Bitbucket → New connection, выберите Self-hosted.
- Вставьте базовый URL вашего DC (например
https://bitbucket.example.com), project key и repo slug. - (Опционально) Вставьте Personal Access Token с правами Project admin; мастер тогда сам зарегистрирует webhook. Без PAT мастер вернёт URL и сгенерированный секрет — вы вставите их вручную.
- В 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 — удалите их вручную, если не планируете возвращаться.