如何更新正在运行的heroku应用程序上的app.json清单?

时间:2016-08-03 09:34:40

标签: git heroku deployment

我正在使用连接到GitHub的Heroku Pipelines。

我有三种不同的环境: - Reviews(我的CI测试成功后,我的所有拉取请求都会自动部署到其中) - Staging(部署我的主分支) - Production(我的制作环境)

当我拉动并合并分支时,我的Review个应用程序被创建和销毁。我的StagingProduction个应用始终相同。更新主分支后,Staging会更新,然后我可以手动决定将该代码提升为Production

这太好了!除了我遇到app.json文件的问题。

在开发新分支时,我经常使用新的heroku插件,即Redis数据库或新的监控工具。我这样做是通过更新我的app.json文件来完成的。例如:

"addons": [
  "logentries:le_tryit",
  "newrelic:wayne",
  {
    "plan": "mongolab:sandbox",
    "as": "MONGODB_URI"
  },
  {
    "plan": "heroku-redis:hobby-dev",
    "as": "REDIS_SESSIONS_URI"
  }
]

创建拉取请求后,会在Reviews中创建一个应用,我可以看到我的新插件。不幸的是,当我将我的分支与master合并时,app.json似乎在我的Staging环境中(以及随后在我的Production环境中)再次运行。

有没有办法在现有的heroku应用程序中重新运行app.json清单?并且每次新部署都能实现自动化吗?

如果没有,是否有原因?

谢谢!

1 个答案:

答案 0 :(得分:2)

没有办法做你要问的事。仅在创建新的Heroku应用程序时解析app.json,而不是在重新部署时使用。{1}}。原因是它可能会对生产应用程序造成不必要的副作用。

EG:如果从app.json文件中删除一行并将其推送到现有的Heroku应用程序,会发生什么? Heroku应该删除您的插件(可能会破坏大量数据吗?)

相反,您应该做的是:当您剪切生产版本时,如果您需要使用新插件或更改它们,请通过CLI手动执行。

例如:

$ heroku addons:create heroku-redis