Skip to content

生产发布流程

本文档定义 IOEB 平台的开发测试环境与生产环境发布流程。

环境规则

  • 合并到默认分支后自动部署到开发测试环境 dev.fdueblab.cn
  • 生产环境只通过 GitHub Release 发布。
  • 所有代码改动必须通过 Pull Request 合并。
  • 常规生产发布固定在每周三执行。
  • 紧急修复使用补丁版本发布,并在发布记录中说明原因。

版本号

常规发布使用日期版本号:

text
v2026.06.24
v2026.07.01

同一天补丁发布追加补丁序号:

text
v2026.06.24.1

发布组件

平台生产发布包含三个仓库:

组件仓库生产部署内容
后端fdueblab/ioeb_backendbackend
智能体fdueblab/Micro-Agentagent
前端与文档fdueblab/ioebfrontenddocs

推荐发布顺序:

text
ioeb_backend -> Micro-Agent -> ioeb

后端先发布,可以降低前端调用新接口时遇到旧后端的风险。

每周发布节奏

  1. 周一到周二正常合并 PR,改动自动部署到开发测试环境。
  2. 周二下午冻结本周候选版本,记录三个仓库的 commit SHA。
  3. 周二晚或周三上午在开发测试环境完成冒烟测试。
  4. 周三创建生产 GitHub Release,触发生产部署。
  5. 发布后记录 release notes、已发布 commit、验证结果和回滚目标。

自动化发布

推荐使用 ioeb 仓库的 Platform Release workflow 发生产版本。

首次使用前需要在 fdueblab/ioeb 配置:

  • Repository secret PLATFORM_RELEASE_TOKEN:这个 token 需要能在 fdueblab/ioeb_backendfdueblab/Micro-Agentfdueblab/ioeb 三个仓库创建 GitHub Release,并读取 Actions 状态。Fine-grained token 至少需要三个仓库的 Contents: Read and writeActions: Read 权限;classic token 可使用 repo scope。
  • GitHub Environment production:建议配置 required reviewers。workflow 的真正 release job 会绑定这个环境,因此可以在创建生产 release 前保留人工批准点。

发布步骤:

  1. 打开 fdueblab/ioeb 的 GitHub Actions。
  2. 选择 Platform Release
  3. 点击 Run workflow,分支选择 master
  4. 先用 mode=dry-run,输入版本号,例如 v2026.06.24,确认生成的发布计划只包含 backendagentfrontenddocs
  5. 确认后再次运行,选择 mode=release,并在 confirm_version 输入同一个版本号。
  6. 如果 production 环境配置了 required reviewers,在 GitHub 页面批准 release job。
  7. 等待 workflow 创建三个仓库的同名 GitHub Release,并等待生产部署完成。

默认 ref:

输入默认值含义
backend_refmainfdueblab/ioeb_backend 发布 ref
agent_refmasterfdueblab/Micro-Agent 发布 ref
ioeb_refmasterfdueblab/ioeb 发布 ref

如需发布冻结版本,可以把这些输入改成具体 commit SHA。workflow 会自动把 ref 解析成固定 SHA 并写入 release manifest。

Release Manifest 手动发布

一般不需要手动编辑 manifest。以下命令作为本地兜底方案保留。

生产发布必须使用 release manifest 固定三个仓库的发布 commit。复制模板:

bash
cp release/platform-release.example.json release/platform-release.v2026.06.24.json

version 和每个组件的 ref 替换为冻结时验证过的 commit SHA。不要在正式发布 manifest 中保留 mainmaster

查看本地发布计划:

bash
python3 scripts/create-platform-release.py release/platform-release.v2026.06.24.json

确认无误后创建生产发布:

bash
python3 scripts/create-platform-release.py release/platform-release.v2026.06.24.json --execute

脚本会按 manifest 顺序创建三个仓库的同名 GitHub Release,并等待对应 release workflow 成功完成。创建 GitHub Release 会触发生产部署 webhook。

如果确实需要重跑已有 release,可使用:

bash
python3 scripts/create-platform-release.py release/platform-release.v2026.06.24.json --execute --skip-existing

服务镜像发布

linezolidproject-1project-4 不随每周平台发布自动部署,避免某个科研服务镜像构建失败阻塞核心平台上线。

这些服务需要单独发布时,在 fdueblab/ioeb 创建 services-vYYYY.MM.DDservices-vYYYY.MM.DD.N 格式的 GitHub Release。只有这个前缀会触发 Build & Deploy Services 的生产部署;前端和文档 workflow 只响应 v* 平台版本,不会被服务版本误触发。

服务发布前需要额外确认:

  • 需要发布的服务镜像在开发测试环境或本地构建通过。
  • 该服务依赖的数据、模型文件和端口配置已在生产环境准备好。
  • 如果只需要发布前端、后端、文档或智能体,不要创建 services-v* release。

发布前检查

发布前至少确认:

  • 开发测试环境首页、登录、核心 API 健康检查正常。
  • 生产数据库已按发布风险完成备份。
  • 涉及数据库结构或数据修正时,已准备回滚或补偿脚本。
  • 生产当前版本和镜像 tag 已记录。
  • Release manifest 中所有 ref 都是固定 commit SHA。

发布后检查

发布后至少确认:

  • https://fdueblab.cn/api/health 返回正常。
  • 前端首页可以打开并登录。
  • 关键业务链路可用。
  • 微服务代理 /mcp-proxy/{port}/... 可用。
  • 新增日志或审计记录写入生产数据库。

回滚

回滚优先使用上一版 release manifest 对应的镜像 tag,不通过临时改代码回滚。回滚步骤:

  1. 找到上一版生产 release manifest。
  2. 重新部署上一版各组件镜像。
  3. 如果发布包含数据库破坏性变更,执行预先准备的回滚或补偿脚本。
  4. 验证生产健康检查和关键链路。
  5. 在事故记录中说明回滚原因、影响范围和后续修复计划。

Micro-Agent PyPI 发布

平台生产发布和 SDK 发包是两类动作。平台发布使用 vYYYY.MM.DD 标签;PyPI 发包使用 sdk-vX.Y.Z 标签,避免每周平台发布误触发 Python 包发布。

All rights reserved.