更新 Heroku 上的堆栈

cho*_*oba 6 perl heroku

我有一个使用heroku-buildpack-perl buildpack 在那里运行的小应用程序。这只是一个小型Plack应用程序,并且已经正常运行了大约两年。

但后来,Heroku 告诉我,它运行的堆栈太旧了,我需要升级它。“只需运行新的部署,应用程序就会安装到新的堆栈中!” 他们说或类似的话。

我通过在 git 存储库中创建一个空提交来启动新的部署,部署运行了...但应用程序崩溃了。从日志中我意识到他们更新了 Perl 版本,但部署没有更新我的 XS 库(我使用local::lib,不确定这是否是构建包的一部分,或者我当时在创建应用程序时手动设置它) 。

最后,我删除了该应用程序并在新堆栈上重新创建了它,效果很好。我没有在任何地方保存任何数据,所以这不是问题。但是,更新堆栈的正确方法是什么?应该有一个选项告诉 Heroku 重建依赖项,对吗?

交叉发布到PerlMonks

Tin*_*yen 9

设置 Heroku 堆栈。在这种情况下heroku-20相当于 Ubuntu 20.04

$ heroku stack:set heroku-20
Run Code Online (Sandbox Code Playgroud)

由于您使用的是不同的堆栈,旧的缓存可能不兼容。清除缓存:

$ heroku plugins:install heroku-builds
$ heroku builds:cache:purge -a appname
Run Code Online (Sandbox Code Playgroud)

触发重建:

$ git commit --allow-empty -m "Purge cache"
$ git push heroku master
Run Code Online (Sandbox Code Playgroud)

笔记:

您必须确保您使用的构建包与heroku-20. 如果不是,它将无法工作。您将必须等待维护者更新、使用不同的构建包或自行修复构建包并使用它。
如果您逐步遵循此步骤,则类似于部署全新的应用程序。