Git Platforms
What Lunar supports on GitHub and GitLab — identity, webhooks, policy results, merge gating, and CI — and where the setup instructions for each Git platform live.
Lunar integrates with GitHub (github.com and GitHub Enterprise Server) and GitLab (gitlab.com and self-managed instances). One Hub can serve both at once, and each repository is routed by its host.
Most of Lunar works identically on either Git platform: components, domains, collectors, policies, catalogers, the SQL API, and the Grafana dashboards behave the same on both. The differences are concentrated in a few places, and this page is the summary — read it before planning an install so nothing on the list below is a surprise later.
Creating the credential is platform-specific, and lives on each platform's page:
GitHub — create the GitHub App the Hub authenticates as.
GitLab — create the group access token, and set up the merge gate on Ultimate.
Everything after that is the ordinary install: Self hosted or Dedicated, each of which calls out the GitHub and GitLab variants inline where they diverge.
Capability summary
Repository identity
github.com/org/repo
gitlab.com/group/project, including nested subgroups
Webhook ingestion
Push, pull request, workflow run
Push, merge request
Webhook registration
Automatic, per repository
Automatic, per project
Results on pull/merge requests
Check run + PR comment
Commit status (GitLab Free/Premium) or external status check (GitLab Ultimate) + MR comment
Results on the default branch
Check run + Grafana dashboards
Commit status + Grafana dashboards; project badges; broadcast messages (single-tenant instances, when the configured token has admin rights)
Merge gating
Mark Lunar's check required in branch protection
Provisioned automatically on Ultimate; on Free and Premium, enable Pipelines must succeed yourself
Which CI systems Lunar traces is a separate question from which Git platform you are on — see Lunar CI Tracer.
What the differences mean in practice
Merge gating depends on your GitLab tier
On GitHub, Lunar posts a check run and you decide whether to make it required in branch protection.
On GitLab Ultimate, Lunar blocks merge requests whose gating policies do not pass, and provisions the necessary project settings itself — see the merge gate for what it changes and how to override a block.
On GitLab Free and Premium, Lunar posts a commit status instead. That can still gate merges, but you turn it on per project with Pipelines must succeed, and it gates on the whole pipeline rather than on Lunar as a named requirement. There is also no comment-driven bypass on these tiers.
Self-managed hosts must be configured
GitHub Enterprise Server and self-managed GitLab are both supported, but a self-managed GitLab host is only recognized as GitLab if you list it in your credentials configuration. See GitLab.
Running GitHub and GitLab together
One Hub can serve both. Configure the GitHub App as usual and add HUB_GITLAB_TOKENS alongside it; each repository is routed by its host. Neither platform is mandatory to the Hub, which starts as long as at least one is configured.
The Helm chart has not caught up on that last point: its template guard still requires the GitHub App values, so a self-hosted chart install carries a GitHub App configuration even when every component lives on GitLab. See install Step 4; dedicated hub.gitlab.* values are planned.
Next steps
Then carry the credential into your install:
Self hosted — Prerequisites and the install walkthrough.
Dedicated — Earthly configures the Hub; you deposit the credential into your install.
Last updated
