Как сохранить папку миграции для тестового сервера и рабочего сервера в django? - PullRequest
0 голосов
/ 21 февраля 2020

Я давно занимаюсь этим вопросом. У нашей компании есть два django сервера, один для тестирования, а другой для развертывания, каждый со своими базами данных и миграциями.

Первоначально я решил просто поддерживать две папки миграции:

-->migrations
-->migrations(P)

Как видно выше Миграции (P) обозначает уровень производства Миграции , эта конфигурация используется в основном на этапе тестирования, когда все миграции связаны с тестовой базой данных, а иногда и с ней. при переходе в производственный режим происходит переключение на следующую структуру папок:

-->migrations
-->migrations(T)

В приведенном выше случае миграции (T) относятся к тестовой базе данных и миграции связаны с сервером производственного уровня.

Это работало хорошо, но иногда, когда есть несколько коммитов от других разработчиков, а также я работаю над этим сам, из-за перестановки папок файлы миграции объединяются и портятся, вызывая в a cra sh.

Извините, если мой вопрос немного сбивает с толку. Любые альтернативные предложения или подходы для поддержки миграции баз данных на уровне производства и тестирования были бы полезны

1 Ответ

0 голосов
/ 21 февраля 2020

Для приложения должен быть только один каталог миграции. Ваш процесс управления релизами должен быть более устойчивым, чтобы предотвратить перезапись миграций. Это может быть замечено в обзорах кода, прежде чем код будет объединен с master или какой-либо другой веткой стабильного типа. Рецензент должен заметить удаление миграции и поднять проблему.

Теперь о том, как вы управляете тестовой базой данных, когда несколько разработчиков проводят разные и потенциально конфликтующие миграции. Вам нужно общение в команде и внимание к деталям. В 95% случаев миграция должна быть обратимой. Если миграция не выполняется, этот разработчик должен сообщить об этом другим разработчикам, которые собираются запустить и будут контролировать его до тех пор, пока A) не развернут или B) тестовая база данных не будет разобрана с производства или восстановлена ​​из резервной копии перед миграция.

Другая часть коммуникации - это определение того, кто принимает тестовую среду, и определение наличия примененных миграций, которых нет в вашей ветви. Прежде чем развернуть вашу ветку, вам нужно отменить эти другие миграции. Тогда вы можете развернуть свой код и запустить миграцию. Вот почему обратимые миграции чрезвычайно важны.

Сложная часть - это когда миграции действительно объединяются с мастером, любая разработка, которая имеет миграции, зависящие от недавно слитых приложений миграции, должна быть объединена с помощью makemigrations --merge или они могут быть переименованы в счетчик и исправлены их зависимости.

Если для вашей организации трудно сделать это с помощью неписаных правил, то, похоже, вам нужно реализовать более жесткий процесс вокруг ваши релизы. Получение вашей базы данных из синхронизации c с миграциями может быть сложной проблемой для решения. Это особенно усугубляется, когда он находится в производственной базе данных и вызывает проблемы у клиентов. Ваша организация должна эффективно управлять своими рисками с помощью управления выпусками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...