feat: self-hosted GitLab Apps OAuth integration

Adds self-hosted GitLab OAuth sources so Coolify can connect to a self-managed GitLab instance, list private repositories, clone over an OAuth token, and deploy (the GitLab counterpart to GitHub Apps).

Hardening: authenticated, one-time team-bound OAuth callback state; token redaction in deploy logs; custom host port/path kept in clone and ls-remote URLs; submodule OAuth auth; system-wide source selection. Covered by unit and feature tests.

cosigned by OpenAI Codex at M1 Max
This commit is contained in:
Mike Chong
2026-07-20 23:21:40 +02:00
committed by Andras Bacsai
parent 9d341d0bb9
commit a26091de0a
32 changed files with 2216 additions and 26 deletions
@@ -0,0 +1,18 @@
<div>
<form class="flex flex-col gap-2" wire:submit='createGitLabApp'>
<div class="flex gap-2">
<h2>New GitLab App</h2>
<x-forms.button type="submit">Save</x-forms.button>
</div>
<div class="subtitle">Add a self-hosted or GitLab.com instance as a source for your applications.</div>
<x-forms.input id="name" label="Name" required />
<x-forms.input id="html_url" label="GitLab URL" required
helper="For self-hosted GitLab, enter your instance URL (e.g., https://gitlab.example.com)." />
<x-forms.input id="group_name" label="Group Name"
helper="Optional. Comma-separated group names to filter repositories (e.g., myorg,myteam)." />
@if (!isCloud())
<x-forms.checkbox label="System Wide?" id="is_system_wide"
helper="If checked, this GitLab App will be available for everyone in this Coolify instance." />
@endif
</form>
</div>