Мы используем непрерывную интеграцию через TeamCity. При каждом возврате в систему управления версиями база данных и все тестовые данные восстанавливаются с нуля, затем код, затем выполняются модульные тесты для кода. Если вы используете инструмент генерации кода, такой как CodeSmith, его также можно поместить в процесс сборки, чтобы генерировать слой доступа к данным заново с каждой сборкой, следя за тем, чтобы все ваши слои "совпадали" и не вызывали ошибок из-за несоответствующие параметры SP или пропущенные столбцы.
Каждая сборка имеет свою собственную коллекцию сценариев SQL, которые хранятся в каталоге $ project \ SQL \ в системе управления версиями, им присваивается числовой префикс и выполняется по порядку. Таким образом, мы практикуем нашу процедуру развертывания при каждой сборке.
В зависимости от таблицы поиска, большинство наших значений поиска также хранятся в сценариях и запускаются, чтобы убедиться, что данные конфигурации соответствуют ожидаемым, скажем, «reason_codes» или «country_codes». Таким образом, мы можем внести изменения в данные поиска в dev, протестировать их, а затем «продвинуть» их через QA и производство, вместо использования инструмента для изменения значений поиска в производстве, что может быть опасно для времени безотказной работы.
Мы также создаем набор сценариев «отката», которые отменяют изменения в нашей базе данных, в случае, если сборка в производство идет с ошибкой. Вы можете протестировать сценарии отката, запустив их, а затем повторно запустив модульные тесты для версии сборки ниже вашей, после запуска сценариев развертывания.