跳到内容

部署更新指南 ​

SpringOpen 当前处于 V1.0 前开发阶段,只维护当前版本的代码、配置和数据库基线,不提供 V0.x 之间的原地升级或公共 jar 二进制兼容方案。API contract 规则见 API Contract 治理。

更新前检查 ​

检查项说明
版本号Maven revision、镜像 tag、发布说明和 Git tag 一致
数据库当前环境使用干净数据库初始化;不要复用旧开发基线
配置对比 .env、application.yml 和数据库配置,补齐当前配置
前端Admin / App / PC / Install / Docs 与当前后端一起构建和发布
Contract后端、前端、OpenAPI、权限、i18n 和正式文档保持一致
依赖JDK、Spring Boot、Node.js 和外部基础设施满足当前基线
部署Nginx、Docker、WebSocket 代理和静态资源路径匹配当前版本

当前部署流程 ​

  1. 停止写入流量或进入维护窗口。
  2. 备份需要保留的业务数据和 storage/ 持久化文件。
  3. 拉取当前代码或镜像。
  4. 准备符合当前 schema 的干净数据库。
  5. 对比并补齐当前环境变量和配置。
  6. 启动应用,让 Liquibase 执行当前全量基线。
  7. 再次启动应用,确认 Liquibase 二次执行幂等。
  8. 检查健康状态、后台登录、权限菜单、核心 API 和前端入口。
  9. 验证通过后恢复流量。

旧开发数据如确需保留,应按当前 schema 显式导出、转换和导入,不在应用源码或 Liquibase 中保留历史兼容分支。

Docker 更新 ​

bash
docker compose pull
docker compose up -d

持久化目录:

目录作用
storage/私有文件、运行日志、缓存和安装状态
public/对外静态文件
docker/data/Docker Compose 依赖服务数据

不要把 storage/ 当作临时目录清理。只有开发者明确要重置本地开发数据库时,才执行:

bash
./scripts/docker db-reset --yes

该命令会删除并重建目标开发数据库,执行前必须确认容器和数据库名称。

数据库基线 ​

  • Liquibase changelog 由应用启动自动执行。
  • schema 和 seed 按 owning module 分文件维护。
  • 开发期直接维护当前基线,不保留旧表、旧列、旧 checksum、旧 author 对齐脚本或跳过式 precondition。
  • 发布前运行 ./.ai/scripts/check migrations 和 ./scripts/release migration-freeze。
  • 使用干净数据库完成首次启动,再次启动确认 changeSet 数量不变且无重复记录。
  • 禁止通过 clear-checksums、篡改 database_changelog 或兼容 SQL 掩盖当前基线错误。

配置更新 ​

配置优先级:

  1. 数据库配置。
  2. .env / 环境变量。
  3. application.yml / profile 配置。
  4. starter 默认值。

运行期可变配置统一通过 ConfigManager / ConfigResolver 读取;静态启动配置只用于基础设施装配。删除或重命名配置时同步更新代码、配置 schema、环境变量样例和正式文档,不保留旧配置别名。

前端更新 ​

  • Admin / App / PC 必须与当前后端 contract 同步发布。
  • 静态站点部署到子路径时使用项目既有相对路径配置。
  • 文档站构建产物默认输出到 public/docs/。
  • 后端接口变化必须同步 API client、TypeScript 类型、页面路由和 i18n。

回滚 ​

当前版本发生部署故障时:

  1. 保留日志、TraceId 和错误截图。
  2. 停止故障版本。
  3. 恢复部署前数据库与 storage/ 备份。
  4. 恢复上一份完整可运行镜像及其配套配置和前端产物。
  5. 重新启动并验证核心链路。

回滚单位是“应用 + 数据库 + 配置 + 前端”的完整快照,不依赖当前代码兼容旧数据库。

发布后验证 ​

  • /actuator/health 返回 UP。
  • 后台登录、权限和菜单加载正常。
  • API 文档可访问。
  • WebSocket 能鉴权并收发消息。
  • 文件上传、公开访问和私有下载正常。
  • Queue、Scheduler、通知、短信、邮件等运维页无异常。
  • Admin、App、PC、Install 和 Docs 无资源 404、空白页或未翻译 key。

Released under the Apache License 2.0.