Skip to content

Auto DevOps (Beta)

Description

This meta issue has the goal to discuss and track development of the first iteration for Auto DevOps (#35712 (closed)) that will be released in %10.0. This will probably be marked as BETA and not enabled by default for all the projects, but we want it to be very easy to discover and to enable for everyone.

Since many other issues were opened about specific topics, here we can have a summary and discuss about the general process. Relevant comments from other related issues will be reported here.

Steps that will be covered are:

Auto Build

Auto Build will create the application starting from sources. It can be achieved in two different ways:

  • if there is a Dockerfile, use docker build command to create an image
  • otherwise, try to use herokuish buildpacks to automatically detect and build the software

Auto Test

Auto Test will support automatic testing of the application based on herokuish buildpacks extensions to test.

This is covered in #26941 (closed), by extending herokuish or using a customized version.

Auto Code Quality

Auto Code Quality run codeclimate engines on the current code, creating reports that are uploaded as artifacts. In GitLab EE differences between source and target branches are shown in the MR widget.

Note: Implementation is already done but can be improved to avoid dind and related problems (#33266 (closed)).

Auto Review Apps

Auto Review Apps are created for each branch. This can be done with actual version but needs to be added to the configuration file.

Auto Deploy

Auto Deploy deploys current application to Kubernetes (OpenShift will be not supported) if a cluster configuration is available. This is an optional step, since most of the projects will not have a Kubernetes cluster available.

Auto Deploy should not include deployment to staging or canary deployment as a default, but as an optional job that can be uncommented if needed.

To avoid creating a job that fails because of the absence of a cluster, a new .gitlab-ci.yml syntax will be added so it can automatically detect if the cluster is available or not (#34785 (closed)).

Improvements to current Auto Deploy implementation are #32826 (closed), #32825 (moved), #30723 (closed), #29969 (closed), #34833 (closed).

Note: despite of old Auto Deploy template that relies on an "opaque" Docker image that contains high-level commands, we want to make it explicit in the gitlab-ci.yml so people can understand, adapt and contribute. This requires to flatten all the logic in the file, and it is covered in #29412 (closed).

Proposal

The first implementation of Auto DevOps will consider the following aspects:

Considerations on how Auto DevOps can impact on GitLab.com are in gitlab-com/infrastructure#2632.

Links / references

Edited by Fabio Busatto