Il mio attuale flusso di lavoro automatizzato è simile a questo:
- Apporto le modifiche
- Applico le modifiche
- Build (in realtà solo un sacco di test usando il database mock) viene attivato
- Se passano tutti i test, il nuovo codice viene distribuito sul server
Ora supponendo che ci sia un cambiamento nel formato del database - i primi 3 passi passano, ma il codice non funzionerà sul server perché i dati esistenti non sono compatibili con la nuova sorgente.
La soluzione che chiamerei carina è anche fornire / testare il codice di migrazione. Che sembra un sovraccarico per qualcosa che viene eseguito solo una volta.
La soluzione che definirei sensata è interrompere la distribuzione automatica di tali modifiche, eseguire la migrazione e riavviare la catena di distribuzione.
Oggi ho avuto la fortuna che il mio server non sia ancora molto usato (potrei semplicemente abbandonare tutto e conviverci) e non sono state necessarie modifiche. Non sarei così fortunato in futuro però. Come dovrei effettivamente gestire le modifiche al database?