Come mantenere lo script del database per la consegna continua?

2

Stiamo lavorando su un unico framework legacy ed è in continua evoluzione.

Problema 1 : se qualcuno vuole eseguire l'applicazione con il codice più recente, impiega molto tempo a farlo (come qualcuno dimentica di eseguire il commit del codice o esegue il commit del codice parziale).

Soluzione: abbiamo iniziato a utilizzare Jenkins e ad integrarlo con il nostro repository SVN. Quindi ora abbiamo sempre un codice funzionante. Abbiamo pensato, ora chiunque (specialmente i nuovi sviluppatori) può iniziare a utilizzare l'applicazione in un tempo molto breve.

Problema 2 : Presto abbiamo scoperto che non è codice ma modifiche nel database (come l'aggiunta di nuova tabella o modifica di tabelle esistenti o modifiche nello script di bootstrap del database) che richiede tempo agli sviluppatori.

La mia domanda è, come posso implementare le modifiche al codice (che attualmente sono in grado di fare) e le modifiche al database (che non so come può essere fatto) ad alcuni server di test usando uno strumento di automazione come Jenkins .

    
posta Bhushan Patil 14.03.2017 - 16:00
fonte

1 risposta

3

L'approccio che sembra essere il più comune è quello di creare una tabella nel database che tenga traccia della versione di uno schema e dei dati di riferimento. Questa versione non deve essere confusa con la versione del DBMS. Quindi si creano script che modificano in modo incrementale lo schema e aggiornano quella tabella. Ottenere dalla versione a alla versione c questione di eseguire gli script per b e c che può essere automatizzato abbastanza facilmente.

Vorrei anche consigliarti di aggiungere controlli nel codice che verificano la versione dello schema all'avvio e veloce se non è in-sync.

Esistono strumenti come flyway che implementa questa strategia e dovresti guardarli prima di iniziare a creare qualcosa da te.

    
risposta data 14.03.2017 - 17:25
fonte