升级

AuraBoot 仍在密集开发中。小版本之间的升级可能包含 schema 迁移、DSL 契约变更和新的强制配置。按下面的流程走能让升级变得无聊。

版本号

发布线是 MAJOR.MINOR.PATCH(当前主线版本为 1.0.0-SNAPSHOT)。在同一条 MAJOR.MINOR 线内,除 release notes 中显式列出的破坏性变更外,升级是向后兼容的。跨越 MAJOR 边界可能需要手动迁移步骤。

何时使用

  • 想用上后续版本中的新特性。
  • 拉取安全修复。
  • 回到一个已经落后多个版本的环境。逐小版本升级,不要跨级跳。

升级前检查

# 1. 记录当前版本
curl -sS "$AURA_API_URL/actuator/info" | jq .build.version

# 2. 所有节点 health 必须为 UP
for n in app-1 app-2 app-3; do
  curl -sS "https://$n/actuator/health" | jq -r '.status'
done

# 3. 全量备份(见 operations/backup-restore)
./scripts/backup.sh --tag pre-upgrade-$(date +%Y%m%d)

# 4. 确认没有在飞的长任务(先盘点启用中的自动化规则)
curl -sS "$AURA_API_URL/api/automations?enabled=true" \
  -H "Authorization: Bearer $AURA_TOKEN" | jq '.data.total'

升级前备份是强制的。pg_dump、DSL 导出、MinIO 镜像三者一起能在不丢数据的前提下回滚。

迁移顺序

迁移必须按这个顺序进行。跳过或乱序会导致初次登录后的经典症状:"菜单不见了"或者"无权限"。

  1. 停流量:通过负载均衡器把应用节点的流量排空。
  2. 停应用进程:在所有节点上停掉应用。
  3. 升级 platform 二进制:在每个节点替换 jar。
  4. 执行数据库迁移:打包的 Flyway/Liquibase 脚本在第一次启动时自动触发;对预演环境只在干净环境里调用 reset-and-init.sh,绝不能在生产环境上用。
  5. 启动一个应用节点:带 --spring.profiles.active=community(部署侧的生产 profile,Docker / Kubernetes 同此)。盯着日志确认 BootstrapStartupRunner 没有出现(启动期不做写库),且插件 import 全部完成。
  6. 验证健康:再启动其它节点。
  7. 逐个启动剩余节点
  8. 在负载均衡器上重新放行流量
# 单节点单命令一步一步升级
systemctl stop auraboot
cp /downloads/platform-1.0.1.jar /opt/auraboot/platform.jar
systemctl start auraboot
journalctl -u auraboot -f | grep -E "Started|migrated|imported"

对于干净的环境(CI、全新的 staging),受支持的入口是:

yes y | ./scripts/reset-and-init.sh   # OSS
# 或
yes y | ./scripts/oss-reset-and-init.sh

reset-and-init.sh 是引导数据的唯一被官方认可的写入路径。应用启动绝不允许 repair、backfill 或 ensure 缺失的角色、菜单或 seed 行。

破坏性变更

每个小版本的 release notes 会列出:

  • 新的强制环境变量。
  • 被移除的 permission code(替换成列出的后继者)。
  • DSL schema 的字段重命名(例如 cr_csp_connector_idcr_csp_connector_pid)。
  • 影响插件作者的行为变更。

升级前先读 notes。导入前在新 platform 上对每个插件跑 aura plugin validate plugins/<each-plugin>

回滚

如果升级后的验证失败:

# 1. 停掉已升级的节点
systemctl stop auraboot

# 2. 从升级前备份恢复
./scripts/restore.sh --tag pre-upgrade-20260528

# 3. 重新指向旧 jar
cp /opt/auraboot/platform-1.0.0.jar /opt/auraboot/platform.jar
systemctl start auraboot

跨多个小版本回滚不在支持范围内。请恢复到失败升级前的那个快照。

验证

  • 每个节点的 /actuator/info 都报告新版本。
  • /actuator/health 处处为 UP,且数据库迁移结果有记录。
  • 对每一个导入的插件,aura plugin validate 全部通过。
  • 登录加一个有代表性的列表页加一个有代表性的命令都能端到端跑通。
  • 升级后第一个小时内日志中不出现 BadSqlGrammarDataIntegrityViolationreferences unregistered handler

相关