Composable Auto DevOps
Problem to solve
We want Auto DevOps to cover ample CI use cases so that its usage and value increase; while Auto DevOps allows for customization of the CI template, it's not intuitive nor easy. The existing template is close to 1000 lines of yml which can be daunting to customize.
Additionally, users who fork and customize the Auto DevOps template miss out on any updates made by GitLab.
Target audience
-
Sasha, Software Developer, https://design.gitlab.com/research/personas#persona-sasha /label Persona: Software developer
-
Devon, DevOps Engineer, https://design.gitlab.com/research/personas#persona-devon /label Persona: DevOps Engineer
Further details
-
As a user I want to use my own "build" stage in
gitlab-ci.yml
as I've fined-tuned it to be efficient for my application, but I want to use the rest of the Auto DevOps stages. -
As a user I want to be able to add a an extra step to the
test
stage of my Auto DevOps pipeline to run additional custom validations (eg. browser testing, custom linting)" -
As a user I want to be able to write my own
.gitlab-ci.yml
but I'd like to be able to easily add in the security jobs that are available in Auto DevOps without having to copy from the template and keep my copy up to date with changes in GitLab" -
As a user, I want to be able to remove a step from my Auto DevOps pipeline (because I don't need it or I know it doesn't work)
Proposal
Break out each stage of Auto DevOps into its own template, so that I can pick which parts of it I'd like to use. For example, if I want to use my own build but every other stage from Auto DevOps I could use
build:
stage: build
image: my-build-image
script:
- ./my-fast-build
include:
- template: Build.gitlab-ci.yml
- template: Test.gitlab-ci.yml
- template: Code-Quality.gitlab-ci.yml
- template: SAST.gitlab-ci.yml
- template: Dependency-Scanning.gitlab-ci.yml
- template: License-Management.gitlab-ci.yml
- template: Container-Scanning.gitlab-ci.yml
- template: Review-Apps.gitlab-ci.yml
- template: DAST.gitlab-ci.yml
- template: Deploy.gitlab-ci.yml
- template: Browser-Performance-Testing.gitlab-ci.yml
- template: Monitoring.gitlab-ci.yml
Security product stages will be templated as part of &581 (closed)
~configure team will template the remaining stages:
- template: Build.gitlab-ci.yml
- template: Test.gitlab-ci.yml
- template: Code-Quality.gitlab-ci.yml
- template: Review-Apps.gitlab-ci.yml
- template: Deploy.gitlab-ci.yml
- template: Browser-Performance-Testing.gitlab-ci.yml
- template: Monitoring.gitlab-ci.yml
What does success look like, and how can we measure that?
Increased usage of Auto DevOps, measures by existing metrics
Links / references
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.