无法将Heroku stack从bamboo-mri-1.9.2升级到heroku-20该如何解决?
问题原因
触发this stack migration path is not available报错的核心原因是bamboo-mri-1.9.2属于2016年就全面停止支持的超旧Bamboo系列栈,和Heroku-20之间间隔了cedar、cedar-14、heroku-16、heroku-18四个已停服的过渡栈,Heroku官方未提供跨度如此大的直接迁移路径,因此CLI和管理后台都无法直接完成设置。
可行解决方案
方案1:分步升级栈(兼容性风险较高,仅建议代码改动成本极低的场景使用)
- 第一步先升级到支持Bamboo直接迁移的最近过渡栈,执行命令:
heroku stack:set cedar-14 -a my_app - 完成栈设置后部署一次代码,验证应用在cedar-14上可正常运行,修复所有运行时、依赖兼容问题
- 按顺序逐步升级到后续栈:cedar-14 → heroku-16 → heroku-18 → heroku-20,每次升级后都需要部署验证功能正常
注意:上述过渡栈均已停止官方安全维护,仅可作为临时迁移跳板使用,不可长期运行业务。
方案2:新建应用迁移(推荐,无历史遗留配置问题,稳定性更高)
- 先在本地完成应用适配:将Ruby版本升级到2.5.0及以上(Heroku-20支持的最低Ruby版本),更新所有依赖包,解决本地运行的所有兼容问题
- 新建基于Heroku-20栈的新应用,执行命令:
heroku create your-new-app-name --stack heroku-20 - 迁移配置与附加资源:导出旧应用的环境配置、关联的数据库/Redis等附加资源,批量同步到新应用
- 将适配后的代码推送到新应用完成部署,全量验证功能正常后,将旧应用的域名、流量切到新应用
- 确认所有流量迁移完成后,再销毁旧应用即可
内容的提问来源于stack exchange,提问作者Mitch
相关产品推荐
相关产品推荐

