First class review apps
We're hitting some limits on our review apps implementation.
- Cleanup job is ugly in pipeline
- People want more flexibility when to run a review app (e.g. even for failed CI): https://gitlab.com/gitlab-org/gitlab-ce/issues/30823
- We should be able to expire stale review apps automatically
- We should be able to re-create an expired or never-created review app on demand
- We should be able to create a review app manually, then have subsequent updates automatic
- We should be able to reduce scope of review app to branches with MR only
- It might be nice to be able to define a generic "deploy", and have it applied to multiple things, including review apps
The current implementation of dynamic environments using manual actions is great and flexible, but maybe instead of extending the implementation, it's time to consider making review apps a first-class entity in the system. Heroku review apps were designed that way, and provide a great end-to-end experience, for example. Of course implementations like that often result in less flexibility, so leaving the core primitives available might still be good. And if so, then we'll still likely be asked to extend those primitives for even more flexibility.