У нас есть производственная настройка нашего решения с двумя веб-серверами, эти два веб-сервера сбалансированы и подключены к одной базе данных.
Мы используем развертывание Octopus и выполняем последовательное развертывание, когда отключаем обновляемый веб-сервер в loadbalancer.
Мы используем первые миграции кода структуры сущностей, а при развертывании запускаем
dotnet ef migrations script
, чтобы сгенерировать сценарий SQL, который мы можем выполнить для базы данных. Вот где начинается наша борьба.
Бывает, что в выполненных миграциях произошли серьезные изменения, которые приводят к сбою веб-сервера, который все еще находится в сети, из-за несоответствия базы данных.
Так что нам нужно как-то до и после миграции
- предварительная миграция запускается перед развертыванием, что переводит базу данных в состояние, в котором работает старая версия приложения, вместе с новой версией.
- запуск после переноса после развертывания, который очищает базу данных.
Мне не удалось найти инструмент, который может создать для меня эти предварительные миграции на основе имеющегося у меня сценария sql, и я начинаю думать, что это мечта, возможно ли это? и если нет, что люди делают в своем конвейере развертывания?
Я смотрел на Liquibase, DbUp, Roundhouse, но ни один из них не обеспечивает нужную мне функциональность.