Backend: Refine how to distribute GitLab component projects on self-managed
Summary - Why is this work needed?
As it relates to the discussion in #415638, we need to evaluate the level of work here and what complexities are involved to distribute GitLab component projects on self-managed.
Proposal
As per #415638 (comment 1658581000) we are primarily exploring the idea of mirroring projects from SaaS into self-managed and provide admins with tools to do this easily:
- Import GitLab-maintained component projects (e.g. the whole group
gitlab.com/components
) into the self-managed instance. - Provide CLI for admins to use to import entire groups, or selected projects.
- The CLI will also publish in the local CI/CD catalog all, the most recent or selected releases of each imported project.
- The CLI can be used in a scheduled CI pipeline to automatically update the projects and publish new releases.
- The CLI is distributed with GitLab product.
As discussed also in https://gitlab.com/gitlab-org/gitlab/-/issues/433441#note_1679589231 we should look into packaging important GitLab component projects with the GitLab installation, so that at the end of the GitLab self-managed installation these components are available in gitlab.mycompany.com/components
group without requiring internet access.
- The CLI can be used to import extra component projects and to upgrade component projects ad-hoc with latest versions from SaaS.
- For self-managed in air-gapped environments they can update their component projects when they upgrade the GitLab version.
Related tasks
-
Create a PoC that shows the workflow of importing projects in a self-managed instance (example: GDK) and have them available in the local catalog. - Imported projects could be internal or public based on the GitLab instance settings. During the installation/upgrade a user/admin must be used to setup those component projects. No other permissions are needed because users should not really contribute to those projects and only consume them. Maybe those projects can be automatically archived (read only).
-
Update the architecture design doc with the decision.
Expected Outcomes
-
Clarity around what this work will look like and complexities involved -
Technical proposal added to #415638 -
Weight added to #415638
Links/References
Edited by Mark Nuzzo