在Heroku上更新堆栈

6
我在那里运行了一个小应用程序,使用heroku-buildpack-perl buildpack。它只是一个小的Plack应用程序,运行了约两年时间。
但随后,Heroku告诉我,它正在运行的堆栈变得太旧了,我需要升级它。他们说:“只需运行新部署,应用程序将安装到新的堆栈中!”之类的话。
我通过在git存储库中创建一个空提交来启动了新的部署,部署运行了...但应用程序崩溃了。从日志中可以看出,他们更新了Perl版本,但部署没有更新我的XS库(我使用local::lib,不确定它是否是构建包的一部分,或者当时创建应用程序时手动设置的)。
最终,我删除了该应用程序并在新堆栈上重新创建了它,这很好地解决了问题。我没有在其他地方保存任何数据,所以这不是问题。但是,更新堆栈的正确方法是什么?应该有一个选项告诉Heroku重新构建依赖关系,对吗?
已发布至PerlMonks

1
我在Github Actions上遇到了同样的问题,当他们更新Ubuntu镜像并更改Perl版本时,本地::lib被缓存。 - simbabque
1个回答

9

设置 Heroku 栈。在此情况下,设置为 heroku-20 相当于 Ubuntu 20.04。

$ heroku stack:set heroku-20

由于你在使用不同的技术栈,旧的缓存可能不兼容。请清除缓存:

$ heroku plugins:install heroku-builds
$ heroku builds:cache:purge -a appname

触发重建:

$ git commit --allow-empty -m "Purge cache"
$ git push heroku master

注意:
您必须确保所使用的构建包与 heroku-20 兼容。如果不兼容,则无法正常工作。您需要等待维护人员更新,或者使用其他构建包,或者修复构建包并使用新构建包。
如果您按照此步骤逐步操作,则类似于部署全新应用程序。

1
是的,清除缓存有帮助! - choroba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接