Symfony 5.4 升级至 Symfony 8(生产环境)
将一个健身房管理平台(MasMusculo/MMfit,Osunasport S.L.)从 Symfony 5.4 完整升级到 Symfony 8,跨越四个主版本,代码库已接近过时,且在升级过程中未中断线上服务。
背景
MasMusculo/MMfit 是 Osunasport 的健身房管理平台,被多家真实健身房每天在生产环境中使用。该平台构建于 Symfony 5.4 之上,这一版本即将结束官方支持,且代码库中积累了多年的历史遗留问题。
范围
连续四个 Symfony 主版本的升级(5.4 → 6 → 7 → 8),每个版本都有各自的废弃特性、被移除的组件和新的约定,全部由一名开发者独自完成,同时平台仍需持续为客户提供服务。
方法
- 逐个主版本升级,而不是直接跳到 8,使每一步都足够小,便于验证。
- 在升级到下一个主版本之前,先修复 Symfony 自身废弃日志中提示的问题,而不是在生产环境中才发现。
- 由于遗留代码库的自动化测试覆盖本就不完整,每次部署前都依赖回归测试以及针对健身房管理核心流程的手动冒烟测试。
结果
该平台如今运行在 Symfony 8 上,整个升级过程零停机,且每天使用该平台的健身房未报告任何功能回归。