Our application stack looks something like
Java 8 out of
Tomcat 7, several distinct
Maven for build and
CI. I have fully automated my team's build process using except for one missing subprocess: database (schema and/or data) changes. Once a change is committed to version control, a new build is kicked off in Jenkins and its resulting artifacts deployed in the build environment. I also have some scripts that deploy configuration file changes, should there be any, which is rare but even that case scenario is covered.
However, database schema changes still have to be applied manually. So if a an entity class contains a variable mapped via
Hibernate to a column that has not yet been added in the database, the deployment fails until the change is applied manually. Needless to say, I hate it and need to overcome this irksome intervention.
I am wondering if there is any framework that integrates database changes, using
convention over configuration. I am currently writing my own script to scan a versioned directory for conventionally formatted files containing schema or data changes (in the form of SQL statements) in
Python but I would rather not reinvent the wheel if such a framework exists already because this scenario should be something many before me had to deal with.