Il nostro stack di applicazioni assomiglia a Java 8
su Tomcat 7
, a diversi database Postgres
distinti, Maven
a build e Jenkins
a CI
. Ho completamente automatizzato il processo di compilazione del mio team utilizzando, tranne un sottoprocesso mancante: modifiche del database (schema e / o dati) . Una volta che una modifica è impegnata per il controllo della versione, viene avviata una nuova build in Jenkins e i suoi artefatti risultanti distribuiti nell'ambiente di generazione. Ho anche alcuni script che distribuiscono le modifiche ai file di configurazione, se ce ne sono, il che è raro, ma anche quello scenario è coperto.
Tuttavia, le modifiche allo schema del database devono ancora essere applicate manualmente. Quindi, se una classe di entità contiene una variabile mappata tramite Hibernate
a una colonna che non è stata ancora aggiunta nel database, la distribuzione fallisce finché la modifica non viene applicata manualmente. Inutile dire che lo odio e ho bisogno di superare questo fastidioso intervento.
Mi chiedo se esiste un framework che integri le modifiche al database, usando convention over configuration
. Attualmente sto scrivendo il mio script per scansionare una directory con versione per i file convenzionalmente formattati contenenti lo schema o le modifiche dei dati (sotto forma di istruzioni SQL) in Python
ma preferirei non reinventare la ruota se tale framework esiste già perché questo scenario dovrebbe essere qualcosa che molti prima di me dovevano affrontare.