Skip to content

Auto/Integrated DevOps

Having an integrated product brings emergent benefits. We should provide best practices in an easy and default way, and market these under the Auto DevOps brand. The following features can be part of this:

Some overall goals/priorities:

  • GitLab-controlled (this is not for enterprise admins to set company defaults; we don't want to deal with merge conflicts as we improve Auto DevOps)
  • Same implied .gitlab-ci.yml config as Auto Deploy++
  • Deprecate Auto Deploy button
  • Easy to “grow up” (start from implied .gitlab-ci.yml, edit and commit)
  • No (bad, opaque) "magic"
  • Should do limited, but valuable pipeline if no k8s configured
  • Shouldn’t be horrible if don’t have runners at all

Questions

  • What about non-web apps? If someone has k8s configured, but the project is not an app, how do we fail gracefully? Build and test might still work, but deploy would be a waste and likely fail, but certainly wouldn't "work".
  • Should we default to using Canaries? (Mark: No)
  • Should we default to deploying to production or staging? (Mark: Production, skip staging)
  • Should we support Openshift? (Mark: No)
  • Do people still need CI/CD Pipelines enabled just to make external integrations work? (Kamil: No)
  • Should we skip CD if KUBE_DOMAIN isn't specified? (Ingress and Auto Deploy will fail without it) (Mark: Yes)

Flow

  • User creates project
  • User pushes code to repo
  • User gets web notification that Pipeline passed if have UI open or see pipeline status on commit/branch/MR (or email notification if pipeline failed)
  • User adds k8s cluster creds to project
  • User adds Prometheus to k8s cluster
  • User adds prometheus to project
  • User re-runs pipeline, production app is created
  • User creates topic branch and pushes code
  • User gets notification that CI passed, sees code quality delta and review app in MR widget

Proposal

Current plan for the first iteration of Auto DevOps that will be shipped in %10.0 is at #37115 (closed).

Old plan
For first iteration, ship: * Auto Build (with buildpack): https://docs.gitlab.com/ee/ci/autodeploy/index.html * Auto Code Quality: https://docs.gitlab.com/ee/ci/examples/code_climate.html * Auto Deploy: https://docs.gitlab.com/ee/ci/autodeploy/index.html * Auto Review Apps: https://docs.gitlab.com/ee/ci/review_apps/index.html * Auto Monitoring: https://docs.gitlab.com/ce/ci/environments.html#monitoring-environments * Stretch Auto CI: https://gitlab.com/gitlab-org/gitlab-ce/issues/26941

The modifications needed are:

Future iterations

Note that Auto CI is a Stretch, since we can ship without it. It's hard to imagine Auto DevOps without CI, but even if all they get is Auto Code Quality, that's some value.

Links

Edited by Fabio Busatto