Pre-packaged and extensible deploy templates
Problem to solve
It's hard to get started with deploying an application. Auto DevOps is a great start and shows a complete CI/CD pipeline for many applications, but has several limitations:
- Auto DevOps only deploys to Kubernetes
- The pieces aren't easily reusable outside Auto DevOps.
- There's no help for deploying in other ways, other than documentation.
Intended users
Further details
Proposal
- Start with composable Auto DevOps.
- Generalize the deploy piece in a way such that anyone can swap in their own way of deploying.
- Provide pre-packaged includes so that common deploy targets are covered. Want to deploy to an AWS VM instead? Include the
aws-vm
template. Want a custom deploy target? Start from one of the templates and write what you need. - Then let people publish their includes so they can be re-used by your organization, or by the broader community.
- Make it easy for people to discover appropriate templates from GitLab.com, the web IDE, VS Code, etc.
- To make templates more flexible, allow declaring required and optional parameters to be consumed by the template, and surface those parameters in the template picker UI.
- What else?
Do this in such a way that a single CI/CD pipeline could leverage multiple deploy targets. e.g. staging might be to Heroku, but production is an AWS VM.
Ideally, provide a best practice of testing these templates so they're less brittle and don't lead to plugin hell.