CI/CD Catalog for GitLab
### Problem As the author of a project of components I would like to open source my project to allow anyone to use it and contribute to it. ### Background Following the proposal in https://gitlab.com/gitlab-com/Product/-/issues/12734 We want to provide a GitLab community experience for the CI/CD components catalog, enabling all users from different organizations to consume and manage their CI/CD components. 1. Namespace catalog (organizational catalog) - a catalog that is bound to a namespace today (organization when its get introduced) 2. Community catalog - a catalog that is available in .com only which allow users to share and discover different components that exist in dispersed repositories and organizations. ### Requirements The User experience should be similar to the internal organizational catalog where: 1. Users / community members are empowered to publish open source CI/CD components 1. Other community members discover them 1. And consume them responsibly ### Requirements 1. A single instance could contain multiple organizations, we would need the ability to allow users to search across multiple organization, in [Cells blueprint](https://docs.gitlab.com/ee/architecture/blueprints/organization/index.html) its mentioned that: > Organizations are isolated from each other by default meaning that cross-Namespace features will only work for Namespaces that exist in a single Organization We need a solution that overcomes this limitation. 2. Components could live in separate organizations on different repositories. Users should be allowed to consume them directly from there, this is why we might need to support the federation of components: https://gitlab.com/gitlab-org/gitlab/-/issues/415638+ 4. Any user should be able to contribute and publish a component to the Catalog 3. Each user should be able to see the published components based on their permission level. ### Iteration plan | Action | description | issue|phase | ------ | ------ | ---|---| | Support federated components | Ability to include component from different instance | https://gitlab.com/gitlab-org/gitlab/-/issues/415638 | MVC | Support cross cell search | Foundation work to support cross cell search of components| https://gitlab.com/gitlab-org/gitlab/-/issues/425750 | MVC | Support index page search | UI (Frontend) part for search a components| https://gitlab.com/gitlab-org/gitlab/-/issues/425780 | MVC | Convert/adjust organizational catalog to community| Convert the name space catalog index & Detailed page to community catalog | https://gitlab.com/gitlab-org/gitlab/-/issues/390655 | MVC | Add entry point to the community catalog | Explore several options and provide ways to access the community catalog | https://gitlab.com/gitlab-org/gitlab/-/issues/425807 | MVC |Advance search filtering | Enable advanced search filters, such as by category, tags, and content type| | | Establish community contribution process | Streamline the process to contribute a component| | | Convert existing templates to components | We should convert all GitLab template to components | | | Mirror components | we should allow administrators to mirror components from community catalog into Self managed | | | Support instance wide catalog for Self manage| the instance wide catalog will be available in .com only, we should evaluate if it is needed in self manage|| ### Open question 1. Should all published components be findable in the instance wide catalog, or do we need to force users to do that explicitly? ### Out of scope The Instance wide catalog will be the community catalog, which means it is only applicable for .com, but in the future we may introduce a similar catalog for self manage customers, (in case a self manage instance has multiple organization). Although this is out of scope for this epic, we should take this requirement into our considerations when designing our solution.
epic