Pergunta

Por favor, com licença, hoje é o meu primeiro dia tentando configurar um ambiente de CI usando o TeamCity. Estou desenvolvendo um aplicativo ASP.NET/SQL Server e até agora tudo bem. MSBuild é meu provedor.

Gostaria de saber quais são as opções quando se trata de garantir automaticamente que as alterações no meu banco de dados local sejam carregadas no servidor de teste como parte do processo de integração. Agora, não tenho muita certeza de que eu queira ir na direção do DBGHOST para sincronizar automaticamente as alterações do esquema, ficaria feliz em substituir o banco de dados no servidor de teste por uma cópia do meu banco de dados local.

Quais são minhas opções aqui?

EDIT: Investigação mais aprofundada mostra que os produtos Redgate SQL são bons para isso. Eles não são baratos. Eles têm um bom white paper sobre o uso de seus produtos em um processo de integração contínua: http://downloads.red-gate.com/helppdf/continuousintegrationfordatabasesusingredgatesqltools.pdf

Foi útil?

Solução

Primeiro de tudo, acho que seu banco de dados deve ser incluído em sua estratégia de controle de origem. Princípios básicos para conseguir isso foram lindamente resumidos em K. Scott Allen Series. Você também pode verificar Design de banco de dados evolutivo de Martin Fowler. E para obter informações mais práticas, verifique as respostas para Como você deve criar seu banco de dados a partir do controle de origem?.

Como eu escrevi em minha resposta, Mantenho dois conjuntos de scripts: um conjunto que pode criar o banco de dados a partir do zero e um que pode atualizar um determinado banco de dados de uma versão para a última. Como parte de uma estratégia de IC:

  • O banco de dados no servidor de CI deve ser reconstruído do zero usando esses scripts. Você pode verificar se seus scripts estão em condições de trabalho.
  • Em um mundo perfeito, eu deveria poder executar uma atualização da versão N-1 à versão n do banco de dados e comparar o esquema obtido com o esquema do banco de dados anterior. Eu ainda estou trabalhando nisso...
  • Os dados de teste devem ser injetados no banco de dados, permitindo o teste de unidade do seu aplicativo (você pode Use BCP por esta).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top