GitLab, GitHub and Bitbucket OAuth
OAuth-based integration with automatic repo discovery and webhooks.
OAuth is the right fit when you want short-lived tokens, automatic project discovery, and central management without per-project webhook wiring. Exlogare supports the same high-level flow for GitLab, GitHub Actions and Bitbucket Cloud; the steps below start with GitLab, then GitHub, then Bitbucket.
When to use OAuth
- You want a single click to connect and have webhooks set up on every project automatically.
- You want to see the tenant’s project list in the Exlogare UI instead of typing paths by hand.
- Your security policy does not allow wide-scope PATs.
Register an OAuth application (self-hosted GitLab)
- In GitLab: Admin Area → Applications → New application (or Group → Settings → Applications for a group app).
- Redirect URI:
https://api.exlogare.net/auth/gitlab/callback. - Scopes:
api,read_user,read_api. - Save the application. Copy the Application ID and Secret — you’ll need them in the Exlogare wizard.
Connect from the dashboard
- Integrations → GitLab → New OAuth connection.
- Supply the base URL of your GitLab, the Application ID, and the Secret.
- Click Connect and approve in GitLab.
Once approved, Exlogare walks your projects, subscribes a webhook to Pipeline events and Job events, and starts listening for failures. On plans that support Hybrid mode, a 60-second background poll kicks in as well — a safety net for dropped webhook deliveries.
gitlab.com fallback
If you are connecting gitlab.com, you do not need to register an OAuth application — Exlogare uses a platform application. Just click Connect with gitlab.com in the wizard and approve the access prompt.
Revoking access
You can revoke any OAuth token from Integrations → GitLab → Connections → Disconnect. Once revoked, the webhooks Exlogare registered through OAuth stay in GitLab — remove them by hand if you do not plan to come back.
GitHub {#github}
For GitHub Actions, create an OAuth App (or the equivalent in GitHub Enterprise):
- Callback URL (Authorization callback): must match the URL Exlogare shows in the UI — typically
https://<your-api-host>/api/integrations/github/oauth/callback(same value as the servergithub_oauth_redirect_uri). - Scopes: enable access to the repositories you want to analyse. Private repos usually need the
reposcope; public-only setups may work with reduced scopes depending on your policy. Includeread:user(or equivalent) so we can show the connected account in the UI. - Copy Client ID and generate a Client secret. For self-hosted GitHub Enterprise, open Integrations → GitHub, choose your enterprise base URL, and paste these into the self-hosted connect flow; for
github.comthe platform operator may have already configured a single OAuth app.
After you authorize, Exlogare subscribes to workflow_run (and check_run where applicable) for each selected repository, validates inbound deliveries with a per-hook secret (X-Hub-Signature-256), and reuses the same analysis and feedback path as GitLab (comments on the PR, then commit, then issue — according to your feedback policy).
You can disconnect from Integrations → GitHub → Connections; remove leftover repository webhooks in GitHub if you no longer need them.
Bitbucket {#bitbucket}
Bitbucket has two distinct flavours and Exlogare treats them differently:
- Bitbucket Cloud (
bitbucket.org) — three-legged OAuth via Atlassian, the same UX as GitHub: pick repos, we register the webhook for you. - Bitbucket Data Center / Server — webhook-only mode. There is no OAuth path. The “Connect” button returns a webhook URL and shared secret instead, plus an optional PAT field that lets the wizard register the hook on your behalf.
Bitbucket Cloud OAuth setup
- In Bitbucket: Workspace settings → OAuth consumers → Add consumer.
- Callback URL must match the one Exlogare shows in the UI — typically
https://<your-api-host>/api/integrations/bitbucket/oauth/callback(the value of thebitbucket_oauth_redirect_urisetting). - Permissions / Scopes — tick all of the following before saving, otherwise Bitbucket rejects the authorization with
error=invalid_scope:- Account: Read
- Workspace membership: Read
- Projects: Read
- Repositories: Read
- Pull requests: Read, Write
- Webhooks: Read and write
- Pipelines: Read
- Save the consumer. Copy Key (= Client ID) and Secret (= Client secret).
- In Exlogare open Integrations → Bitbucket → New OAuth connection, choose Cloud, paste the Key and Secret, then click Connect. Approve the access prompt in Atlassian.
For installations where the operator pre-configured platform credentials, you can skip the consumer registration entirely — the Connect button uses the platform OAuth app and the per-tenant Key / Secret fields are hidden.
After authorization Exlogare lists your workspaces, registers a repo:commit_status_updated webhook on every selected repository, and runs the standard RCA pipeline. Modes (webhook / OAuth polling / hybrid) follow the same plan matrix as GitLab and GitHub.
Bitbucket Data Center / Server (webhook-only)
- In Exlogare open Integrations → Bitbucket → New connection, choose Self-hosted.
- Paste the base URL of your DC instance (e.g.
https://bitbucket.example.com), the project key, and the repository slug. - (Optional) Paste a Personal Access Token with Project admin rights; the wizard then registers the webhook for you. Otherwise we return a URL and a freshly generated secret you can paste manually.
- In Bitbucket: Repository settings → Webhooks → Create webhook. Name
Exlogare RCA, the URL and secret from the wizard, Repository events → Build status updated, Active, Save.
DC < 7.4 caveat: the Build status updated event is only available from Bitbucket Data Center 7.4 onwards. On older releases, upgrade your DC instance, or use the manual
POST /api/analyzeingestion path described in the API reference.
For both flavours, you can revoke from Integrations → Bitbucket → Connections. Once revoked, leftover webhooks stay in Bitbucket — remove them by hand if you do not plan to come back.