Мы используем Castle ActiveRecord для приложения ASP.NET MVC 3, которое мы пишем здесь. Я могу сказать вам, что мы планируем сделать, когда приложение будет запущено (через несколько недель).
У нас есть четыре этапа:
- Разработка
- Тестирование
- 1012 * Балетмейстер *
- Производство
Мы используем Git для контроля исходного кода и Jenkins для непрерывной интеграции. Приложение настроено на автоматическое удаление / воссоздание базы данных при каждом запуске для машины разработки (например, с использованием Visual Studio 2010); у нас есть список машин для разработки, и приложение проверяет работающий в данный момент компьютер, чтобы определить, следует ли ему удалить / создать базу данных.
Когда мы помещаем изменения в Git в центральное (пустое) хранилище, Дженкинс обнаруживает изменения (путем опроса). Он создает приложение, запускает тесты, развертывает приложение на нашем веб-сервере разработки и удаляет / заново создает схему и тестовые данные на нашем экземпляре Development SQL Server.
Но это только для разработки, где важно быстрое прототипирование. Для развертываний в других трех средах мы планируем предоставить нашей группе серверов / инфраструктуры упакованный файл развертывания, который они могут запустить. Для части базы данных наша группа баз данных будет использовать инструмент сравнения Red Gate для сравнения схемы между средой и предшествующей средой и обновления при необходимости. Таким образом, изменения схемы от разработки «сравниваются и обновляются вперед» для тестирования, тестирования для этапа и т. Д.
Это оставляет эти развертывания менее автоматическими, но гарантирует, что мы не влияем на данные в этих средах.