Riassunto dell'ambiente.MSBuild: automatizza la raccolta di script di migrazione db?
- applicazione Asp.net web (fonte memorizzati in svn) banca dati
- SQL Server. (Schema del database (tabelle/sproc) memorizzato in svn)
- versione db è sincronizzata con la versione di assemblaggio dell'applicazione web. (memorizzato nella tabella 'CurrentVersion')
- Server hudson CI che estrae l'app Web dal repository e esegue il file msbuild personalizzato per pubblicare l'app/pacchetto.
Il mio script msbuild aggiorna la versione dell'assembly dell'app Web (Major.Minor.Revision.Build) su ogni build. La 'Revisione' è impostata sulla revisione svn correntemente selezionata e la 'Build' sul numero di build di hudson (incrementato su ogni build automatizzata).
In questo modo è possibile abbinare l'app a una specifica revisione del tronco e ottenere anche altre statistiche di build dal numero di build di hudson.
Mi piacerebbe automatizzare la raccolta di script di migrazione (sproc ecc aggiornati) da aggiungere al pacchetto zip. Immagino che confrontando la revisione svn del db che deve ancora essere distribuito, alla versione distribuita, posso trovare quali file db sono stati modificati nel trunk dall'ultima distribuzione a quel database/ambiente.
Questo potrebbe essere facilmente ottenuto chiamando manualmente il comando svn diff -r REVNO:REVNO
per elencare i file .sql modificati. Questi file potrebbero quindi essere aggiunti manualmente al pacchetto. Sarebbe bello se questo potesse essere automatizzato.
Innanzitutto immagino che dovrò scrivere un'attività personalizzata per verificare la versione del db che deve ancora essere distribuita. Dopo di ciò sono abbastanza insicuro. Qualcuno ha qualche suggerimento su come questo sarebbe ottenuto attraverso un'attività di msbuild esistente o personalizzata?
Infine dovrò autogenare uno script da aggiungere al pacchetto che aggiorna la tabella delle versioni del database in modo da essere sincronizzato con l'applicazione.
Questa è una bella domanda. Usiamo un bel po 'di script di compilazione, ma sto ancora cercando di ottenere il nostro DB in SVN, a volte gli sviluppatori possono essere COSÌ resistenti al cambiamento :) –
Ok, ho trovato un comando svn che può emettere un elenco dei file modificati in un file xml. Da ciò dovrei essere in grado di elaborare quel file xml tramite msbuild per eseguire il checkout dei singoli file che richiedo allo spazio di lavoro di build. Il '>;' comando era il punto cruciale;) svn diff -r REVNO: REVNO --xml --summarize "svn: // PathToTrunk">; D: /temp.xml –