Use CI Steps to define developer environment configuration for Workspaces
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=547117) </details> <!--IssueSummary end--> MR: Pending <!-- NOTE: For context on MR heading, see: https://handbook.gitlab.com/handbook/engineering/devops/dev/create/remote-development/index.html#relationship-of-issues-to-mrs --> ## Description As part of https://gitlab.com/groups/gitlab-org/-/epics/16650+ , we will be converting a devfile into a CI job YAML. We will essentially be converting the devfile into a list of [CI Steps](https://docs.gitlab.com/ci/steps/) and creating a job from those steps. The issue is about providing users the ability to directly define CI steps for defining their developer environments instead of providing a devfile. The reasons for this are as follows - CI Steps are composable units of execution. - CI Steps can be run locally in a docker container - https://gitlab.com/groups/gitlab-org/-/epics/15073+ - CI Steps provides a registry to publish various CI steps. Users can bring in their own registries or CI Steps. - CI Steps provides a concept of versioning in-built. - CI Steps are already used in CI. As we are using CI Runners, using the same constructs/definitions would bring a unifying approach as a platform. - CI Steps are also being proposed for Duo Workflows. - CI Steps are a definition by GitLab which are highly composable. Relying on a foreign definition(devfiles/devcontainers) can be restrictive/challenging in terms of what we want to do vs what the specification wants you to do. ## Acceptance criteria - [ ] Run an investigation to determine the feasibility and benefits of this. - [ ] Understand if we need to build on top of [CI/CD Components](https://docs.gitlab.com/ci/steps/#combine-cicd-components-and-cicd-steps) or CI Steps ## Implementation plan N.A. This is a discussion/spike issue. <!-- NOTE: Feel free to expand with more sections and headers as needed --> <!-- DO NOT TOUCH BELOW -->
issue