Draft: POC: Public CI Catalog server
What does this MR do and why?
This is a Proof of Concept (PoC) for enabling CI Catalog components to be used across different Cells.
Problem
In a multi-Cell GitLab deployment, components published in one Cell cannot currently be used by projects in other Cells. This blocks the Cells architecture from supporting cross-Cell CI component sharing.
Solution
This PoC introduces the concept of a "Public CI Catalog Server" where:
-
New public API endpoint (
GET /projects/:id/components/:path) - Exposes component content for public catalog resources without authentication -
ExternalPathclass - Handles component addresses pointing to external servers (other Cells) -
Cell detection -
InstancePath.match?now checks if the component's project is on the same Cell before treating it as local
sequenceDiagram
participant P as Project CI (Cell 2)
participant F as FetchService (Cell 2)
participant E as ExternalPath (Cell 2)
participant HR as HTTP Router
participant API as Components API (Cell 1)
participant C as CI Catalog (Cell 1)
P->>F: include: component: cell1/org/project/comp@1.0
F->>F: InstancePath.match?() → false (different cell)
F->>F: ExternalPath.match?() → true (allowed host)
F->>E: fetch_content!
E->>HR: GET gitlab.com/projects/:id/components/:path?version=1.0
HR->>API: Route to Cell 1
API->>C: InstancePath.fetch_content!
C-->>API: ComponentData {content, path, version, sha}
API-->>HR: JSON response
HR-->>E: Proxy response
E-->>F: ComponentData
F-->>P: Component content for pipeline
References
How to use components from different Cells (#456843 - closed)
How to set up and validate locally
-
Set up Cells
-
gdk config set cells.enabled trueandgdk config set cells.instance_count 1 gdk reconfiguregdk cells up
-
- Run
gdk cells start - New cell installation failed in my case. I entered
/Users/USER/gdk/gitlab-cells/cell-2and rangdk update. Then, rangdk cells startagain.
- Now, in
http://gdk.test:3333/, I have my main cell. - In
http://gdk.test:12002/, I have another cell. I entered the URL and signed up as a new user. It will require an admin approval so you need to sign in as admin too. - WARNING: Use different browser user or incognito mode for different cells. If there is any confusion about the Cells on your browser tabs, then remove the session cookie.
Current setup:
- Have a published component in your main cell.
- Use this component in the new Cell's project
🎉
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Furkan Ayhan




