Я рассматриваю возможность внедрения рабочего процесса, при котором:
- Во время работы конвейера CI/CD миграции генерируются автоматически с помощью Alembic ()
Код: Выделить всё
--autogenerate - Сгенерированная миграция затем немедленно применяется () в целевую среду
Код: Выделить всё
alembic upgrade head - Это будет происходить для каждой среды в рамках развертывания, без создания или фиксации сценариев миграции вручную.
Однако у меня есть несколько проблем:
- Безопасно/надежно ли динамически генерировать миграции в конвейере, особенно для общей базы данных?
- Как этот подход обрабатывает одновременные изменения (например, несколько ветвей, изменяющих модели)?
- Существуют ли риски непоследовательной или неправильной миграции из-за различий в состоянии БД?
- Существует ли рекомендуемый шаблон для управления миграцией в такой настройке?
Будем признательны за любые рекомендации и рекомендации.