I tend to prefer to hand-roll schema migrations... but I use grate[1] for the most part. That said, I've created similar tooling for different scenarios.
1. https://grate-devs.github.io/grate/
Pretty easy to setup/use in a dev environment as well... see docker-compose.yaml and run/dbup script.