2016-11-10 3 views
2

У меня есть конвейер развертывания на Heroku, который недавно начал использовать обзорные приложения. Это означает, что у меня есть приложение - назовем его CI-APP - который создается из главной ветви.Как использовать другую базу данных для приложений обзора Heroku?

Каждый раз, когда выполняется запрос на растяжение, создается приложение для обзора. Мы используем Django в нашем проекте, поэтому я также добавил команду migrate в фазу release в проекте, так что миграция базы данных может быть выполнена автоматически.

Сегодня коллега подала запрос на вытягивание, в котором содержались некоторые изменения в базе данных. Проблема заключается в том, что миграция выполнялась, и, поскольку в приложениях обзора, похоже, используется та же база данных, что и приложение, к которому они должны присоединиться, миграция была применена, и теперь мое приложение CI-APP перестало работать ... поскольку база кода больше не соответствует структуре базы данных.

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

Любое предложение?

Update

Ok, так что кажется, что Heroku делает создать новую базу данных для приложения обзора, однако: обзор приложения копии всех своих переменных окружения от родителя, в том числе DATABASE_URL (это, кажется, быть единственным способом создать приложение для обзора: https://s3.amazonaws.com/heroku-devcenter-files/article-images/1461071037-initial_set_up_review_apps.png)

Я думаю, что могу сделать черную магию в сценарии postdeploy, но поскольку созданный с помощью базы данных URL-адрес может быть чем-то вроде HEROKU_POSTGRESQL_ {color} _URL, я не конечно, как его найти ....

+0

Вы нашли решение для этого? Странно, что я не получаю больше обсуждений, связанных с этим в Интернете. Эта проблема должна была столкнуться и с другими, или, может быть, у меня пропало нечто такое очевидное! Пожалуйста, дайте мне знать, что у вас есть. Благодаря!!! –

+0

@AnshuKumar, нет, мы не нашли решения этой проблемы. Мы просто решили удалить команду «migrate» из автоматического запуска, поэтому теперь мы просто запускаем их вручную. Сейчас это довольно стабильное приложение, поэтому миграции довольно редки.Мое предложение для вас было бы сделать то же самое и только перенести обзорные приложения после того, как вы предоставили им другой db. – AdelaN

ответ

0

Для этого создайте файл app.json в корне вашего проекта вместо использования панели инструментов heroku. В этом файле вы можете указать, какие переменные среды наследуются от родителя.

Из документов Heroku:

"env": { "INHERIT_THIS_CONFIG_VAR": { "required": true }, "DONT_INHERIT_THIS_CONFIG_VAR": "production" },

Это позволяет указать, какую базу данных вы хотите использовать для приложения обзора. Глядя на документации Postgres аддон Heroku (я предполагаю, что вы используете Postgres):

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

Таким образом, переменная конфигурации database_url будет создана аддоном. Вам просто не нужно помещать его в файл app.json, и он будет создан автоматически.

+0

Привет, не могли бы вы более подробно рассказать о том, как именно это решит проблему? – AdelaN

Смежные вопросы