Better support for timed releases

Description

If teams at very large scale, it's impossible to deploy continuously on every push to master since new pushes come in at a faster rate than they can be deployed. For those teams, some kind of timed release is necessary. We can already support this at a basic level with scheduled pipelines. e.g. Set up a deploy every hours, every 8 hours, every day, etc. But perhaps there's more we can do. Release trains have come up, but it's possible to have more pushes than can be processed in a day. Auto-canceling redundant pipelines have come up, although our current answer doesn't work well if you've got capacity to run jobs simultaneously. Perhaps we need to be able to specify that only one pipeline should be run for a given project ref. Other vendors have this limitation/feature. We probably don't need to limit it for all projects and all refs, but running CI/CD on only one version of master at a time kind of makes sense. In the case of failures when there are a bunch of batched changes, perhaps we could automatically bisect to find the offending merge/commit, but otherwise we get to skip a lot of unnecessary compute. Ideally, we wouldn't have test failures on master because tests are already checked on each branch, but merge conflicts do happen and testing every check independently might be too cost prohibitive.

Also, maybe we need to differentiate what part of the pipeline we're talking about. Even if you do want to run tests on each push, your deployment rollout may take a long time and thus not able to run as frequently. Or vice versa.

Proposal

Links / references

  • Related: https://code.facebook.com/posts/270314900139291/rapid-release-at-massive-scale/

Documentation blurb

Overview

What is it? Why should someone use this feature? What is the underlying (business) problem? How do you use this feature?

Use cases

Who is this for? Provide one or more use cases.

Feature checklist

Make sure these are completed before closing the issue, with a link to the relevant commit.

  • Feature assurance
  • Documentation
  • Added to features.yml
Edited Sep 18, 2017 by Mark Pundsack
Assignee Loading
Time tracking Loading