Blackout periods for environments MVC
Problem to Solve
It would be useful for gitlab.com full CD deployments to be able to specify windows of time when runners are paused for an environment or group of environments. This has the following use cases:
For a regularly scheduled cron like syntax:
- For teams that are not global, not as relevant to GitLab, the ability to halt CICD deployments off-hours.
- Suspend CICD pipelines on weekends when there is limited team availability.
For ad-hoc windows:
- Special events such as big announcements, livestreams, etc.
- Holidays where there is limited team availability.
Because you typically wouldn't want to disable CI at any time, the blackout period schedule should be able to select runner labels which honor the schedule (or not.) This would give users control to say runners with the 'deploy' label should honor the schedule, but runners with 'build' should not.
Note that in the future blackout periods will need to be defined at the instance or group level as well, and these should work in conjunction with each other. We don't need to implement these other tiers at this point, but should keep it in mind.