I’m thinking of setting up a complex deployment process. I kind of feel like this should be pretty standard, but difficult to find any materials on this.
There are 3 servers: dev, staging, production.
Dev gets deployed every time there’s a push to the master
branch.
Staging gets deployed every time there’s a push to the production
branch while cloning the production database before the update.
Production is basically identical to staging, just that staging is meant to be fiddled with by the devs.
The deployment process to production should be as follows:
- developer pushes to the
production
branch - tests and other checks are run
- production database is cloned and migrated on (just to check that migrations work)
- actual deployment with building and transferring to prod server
My question is that are there services that just do all of this?
fly.io can handle the app side, but I don’t trust it with my prod DB and I hate CLI tools that assume you’re only working with one app.
DigitalOcean can now deploy elixir apps and has managed databases, but I don’t see an option to deploy stuff together with cloning.
AWS I just don’t really know much about. is it even thinkable that they do this automatically?
even if services do just one part I would be happy about it. like DigitalOcean does deploy the app per branch pretty easily, that’s nice.
ultimately I could define custom CI/CD routines in GitHub or whatever, but I don’t really trust myself that much