Alla ricerca di continue strategie di implementazione per i progetti di database del server SQL indirizzati a Azure SQL tramite VSTS. Il mio scenario ...
- Uso di VSTS per CI / CD
- Utilizzo di un progetto di database SQL Server per definire lo schema del mio database
- Uso di Dapper per il mio ORM (quindi nessuna migrazione tramite EF)
- Utilizzo di un database SQL di Azure
- Alcune tabelle hanno dati seme, che molto probabilmente verranno aggiunti nel tempo (supponiamo che nessun dato seme venga eliminato per il momento)
- Utilizzo di test di integrazione destinati a un database separato, poiché i test cancelleranno i dati di ogni tabella
- Uso del flusso Git
Vedo tre scenari che devo gestire
- Le modifiche al database non distruttive vengono apportate al ramo di sviluppo, che può includere o meno modifiche ai dati
- Le modifiche distruttive del database vengono apportate al ramo di sviluppo
- È necessario unire più commit con una combinazione di scenari 1 e 2 nel ramo principale
Il primo scenario può essere facilmente gestito utilizzando l'attività di distribuzione SQL di Azure e DACPAC incorporati di VSTS. I dati dei semi verranno aggiunti utilizzando gli script di pre / post distribuzione
Il secondo scenario è un po 'più difficile, tuttavia dovrebbe seguire lo stesso approccio dello scenario uno con lo script di pre-distribuzione che è molto più importante in quanto sarebbe responsabile della rimozione dei vincoli, eliminazione dei dati , ecc.
Il terzo approccio su cui sono completamente perso. Quello che accadrà è che ho una serie di commit che devono essere uniti in un singolo ramo, tutti con script di distribuzione pre / post che devono essere eseguiti in un ordine specifico. Non sono a conoscenza di una strategia o di uno strumento in grado di gestirlo e sto cercando suggerimenti qui.
Infine, e questo non è estremamente importante, ma ho anche test di integrazione che hanno come target un database di test che vorrei eseguire durante la compilazione (parte CI) in contrasto con la parte di rilascio (CD). Qualcuno è a conoscenza di una guida o di istruzioni sull'implementazione di test di integrazione su un database di test come parte di un processo di configurazione?
-Tim