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

unk*_*own 3 git deployment heroku

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

我有三个不同的环境Reviews:-(一旦我的 CI 测试成功Staging,我的所有拉取请求都会自动部署到那里)- (我的主分支部署到的地方)- Production(我的生产环境)

Review当我拉和合并分支时,我的应用程序被创建和销毁。我的StagingProduction应用程序总是一样的。Staging当我的主分支更新时更新,然后我可以手动决定将该代码提升到Production.

这一切都很棒!除非我的app.json文件有问题。

在开发新分支时,我经常使用新的 heroku 插件,即 Redis db 或新的监控工具。我通过更新我的app.json文件来做到这一点。例子:

"addons": [
  "logentries:le_tryit",
  "newrelic:wayne",
  {
    "plan": "mongolab:sandbox",
    "as": "MONGODB_URI"
  },
  {
    "plan": "heroku-redis:hobby-dev",
    "as": "REDIS_SESSIONS_URI"
  }
]
Run Code Online (Sandbox Code Playgroud)

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

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

如果不是,有什么原因吗?

谢谢!

rde*_*ges 5

没有办法做你所要求的。该app.json只创建一个新的Heroku应用时解析,而不是在重新部署之一。原因是它可能对生产应用程序造成不必要的副作用。

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

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

例如:

$ heroku addons:create heroku-redis
Run Code Online (Sandbox Code Playgroud)