Extract and dogfood components in GitLab projects
This issue relates to https://gitlab.com/gitlab-com/gitlab-OKRs/-/work_items/4703+
Goal
Now that we have launched CI/CD components and catalog to Beta we need to start dogfooding components on GitLab projects in order to gain first-hand experience on it and identify any opportunities for improvements early.
We should collaborate closely with Engineering Productivity as they will:
- Help us identify whether the ideas below are good candidates and whether there are better low-hanging fruit.
- Review and merge the MRs related to creating/converting components.
- Help us identify where existing templates are used and what projects we need to modify to dogfood the new components.
- Ultimately, keep maintaining these new components as you currently maintain the templates.
grouppipeline authoring will iterate over the ideas below following the official docs https://docs.gitlab.com/ee/ci/components/:
- Pick a template to convert to component.
- Copy the content into an existing or new component project.
- Refactor the content to follow the best practices.
- Deprecate the template and ask users to use the component instead.
- Convert existing usage of the template to use the component (this would require an MR per project using the template).
- Remove the template file when it's no longer used by any other GitLab project (alternatively create follow-up issues).
Ideas
- extract the
gems/gem.gitlab-ci.yml
fromgitlab-org/gitlab
project as component. - create helper components to assist developers in testing and releasing component projects (e.g https://gitlab.com/components/toolkit is being developed)
- convert https://gitlab.com/gitlab-org/quality/pipeline-common/-/tree/master/ci into separate components. E.g. dogfooding them in
- Have some GitLab projects like https://gitlab.com/gitlab-org/cli/-/blob/ffeb9e59de926b51623d2aec0c602652e282c745/.gitlab-ci.yml#L24-27 to use the newly created https://gitlab.com/gitlab-components
Edited by Fabio Pitino