我在Heroku上有一个部署管道,最近开始使用评论应用程序。这意味着我有一个应用程序 - 让我们称之为CI-APP - 这是从主分支创建的。
每次发出拉取请求时,都会创建一个评论应用。我们在项目中使用Django,因此我还将migrate
命令添加到项目的release
阶段,以便可以自动完成数据库迁移。
今天,一位同事提交了一份拉取请求,其中包含一些数据库更改。问题是迁移已经运行,并且由于审核应用程序似乎正在使用与他们要合并的应用程序相同的数据库,因此迁移已应用,现在我的应用CI-APP停止工作...因为代码库不再匹配数据库结构。
我搜索了很多关于如何使用完全不同的数据库作为评论应用程序与父应用程序相比,但无济于事(有一些资源提到如何复制数据库内容,但是不是我需要的。)
有什么建议吗?
更新
好的,所以似乎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)
检查您是否也没有在 Heroku 的 Pipeline Settings CONFIG VARS 中设置 DATABASE_URL ..应用已创建。
答案 1 :(得分:-1)
为此,请在项目的根目录中创建app.json文件,而不是使用heroku仪表板。在此文件中,您可以指定要从父级继承的环境变量。
来自heroku docs:
"env": {
"INHERIT_THIS_CONFIG_VAR": {
"required": true
},
"DONT_INHERIT_THIS_CONFIG_VAR": "production"
},
这允许您指定要用于审阅应用的数据库。看一下heroku postgres插件的文档(我假设你正在使用postgres):
作为配置过程的一部分,DATABASE_URL配置var为 已添加到您应用的配置中。这包含您的应用使用的网址 访问数据库。
所以database_url配置变量将由adddon创建。您只需将其放在app.json文件中,它就会自动创建。