Shortcircuit or logical OR of jobs

Problem to solve

Customers need continuous delivery pipelines such that only one of two actions is needed before a pipeline proceeds to subsequent stages. e.g. deploy to a canary and then wait for either a manual action OR a 30-minute delay before deploying to production.

Further details

Example shown on https://cloud.google.com/solutions/continuous-delivery/:

image

Currently, we can't support this as both the manual approval AND the delayed job would be required to succeed before the production deploy would happen.

Proposal

Maybe a simple way to support this is to be able to declare a stage as a logical OR instead of logical AND of job statuses.

What does success look like, and how can we measure that?

Users are able to model their preferred deployment flow in .gitlab-ci.yml.

Links / references