Create reusable components for the Global CI/CD Catalog
## Goals - [x] Create `10` GitLab-maintained CI components to be used in GitLab projects for dogfooding ([Q4 OKR](https://gitlab.com/gitlab-com/gitlab-OKRs/-/work_items/4703 "KR1: GitLab to dogfood 10 usages of CI components")). - @fabiopitino - In addition to the 4 GitLab-maintained CI components created already in https://gitlab.com/gitlab-components, PA is self-assigning from this [list](https://gitlab.com/gitlab-org/gitlab/-/issues/432540#list) 1 per team member which will total up to the 10 components available for dogfooding in the Catalog in ~"FY24::Q4". Build component was completed during the week of 2023-12-11. - [ ] Determine ownership and maintenance of GitLab-maintained CI Components after they're created. - [ ] Leverage community contributions with a competition amongst contributions to grow the catalog with components. - [see Slack announcement](https://gitlab.slack.com/archives/C04CRLZSXMW/p1699535085478049) - @dhershkovitch ## Strategy 1. https://gitlab.com/gitlab-org/gitlab/-/issues/411872+ is the top priority as once people start to use these components we cannot move them easily due to the path. (Awaiting scheduling of issue) 2. We can start with https://gitlab.com/gitlab-org/gitlab/-/issues/430818+ since they would be useful for all users (Awaiting scheduling of issue) 3. At the same time we need to ensure documentation is clear and concise: 1. https://gitlab.com/gitlab-org/gitlab/-/issues/430848+ to correct and simplify existing docs. 2. https://gitlab.com/gitlab-org/gitlab/-/issues/430816+ to recommend what to document for components. 3. https://gitlab.com/gitlab-org/gitlab/-/issues/432768+ for GitLab team members as well as the wider community to contribute to GitLab-maintained components. 4. Create a list of components we would like to have as GitLab-maintained for the wider community: https://gitlab.com/gitlab-org/gitlab/-/issues/432298+ and https://gitlab.com/gitlab-org/gitlab/-/issues/432540+ 1. Example: convert the top 10/15 most popular CI templates - @marknuzzo 5. Create a list of components we would like to have as GitLab internal. 1. Work with gitlab~12217313 to extract reusable components from our CI pipelines, either for product projects or automations. Ensure all the above is being dogfooded by GitLab (the organization). ## Potential Strategies - Create GitLab CI components based on some of the most popular GitHub Actions - e.g. [ordered by most installed/starred](https://github.com/marketplace?category=&query=sort%3Apopularity-desc&type=actions&verification=) - `@fabiopitino` noted that it's important to differentiate what we could better understand how best to tradeoff between using CI Steps to run GH Actions vs trying to recreate these as CI Components ## GitLab Components Repository - Currently: https://gitlab.com/gitlab-components - To be moved to: https://gitlab.com/components ## Migration strategy for GL-maintained templates - Converting our [GL-maintained templates](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/lib/gitlab/ci/templates) - Certified components - Validate conversion by different teams - Commitment to maintain and support components - keep feature parity between Templates and Components (patches, updates, fixes, etc...) - Review customer request - Fork components to gitlab.com/components - Should only be done by GL team member (maintainer of the project) - Every component that is in that group will get the GL-Certified badge
epic