Add deploy strategies to Auto DevOps settings
Description
We already provide some ways for people to control the configuration of their application. With Auto DevOps, you can use our default Helm chart, or you can provide your own. Auto DevOps listens to variables like PRODUCTION_REPLICAS
to set the number of pods to spin up when deploying to production. We should explore more configuration options, and make these first-class parts of GitLab.
Proposal
Add an Application Control Panel to project settings to tune the behavior of the application. Choices will work for Auto DevOps out of the box, but could be leveraged by any .gitlab-ci.yml
file that uses the same variables. This should be mentioned in the panel, linking to documentation that explains what the settings are for.
The settings should be in the new foldable section introduced in https://gitlab.com/gitlab-org/gitlab-ce/issues/43466.
In this iteration, we need radio buttons showing two possible options as deploy strategies:
-
Continuous deployment to production -
Automatic deployment to staging, manual deployment to production
- If you choose "Continuous deployment to production" (default),
STAGING_ENABLED
andINCREMENTAL_ROLLOUT_ENABLED
variables will be unset. - If you choose "Automatic deployment to staging, manual deployment to production",
STAGING_ENABLED
andINCREMENTAL_ROLLOUT_ENABLED
will be set.
Designs
- "Domain" and "Deployment strategy" always shows up if "Enable Auto DevOps" or "Instance default" is on. Otherwise, they are collapsed. The
- In "Deployment strategy" section, it always has "Deployment strategy needs a domain name to work correctly." message to let users know it cannot work if there is no domain name.
Enable Auto DevOps / Instance default | Disable Auto DevOps |
---|---|
Note: We won't place any "description" text below the deployment options as they are pretty self explanatory. The help ? icon should link as follows:
Continuous deployment to production -> https://docs.gitlab.com/ee/topics/autodevops/#auto-deploy
Automatic deployment to staging, manual deployment to production -> https://docs.gitlab.com/ce/ci/environments.html#manually-deploying-to-environments