1. 版本管理总体流程
1.1 适用场景
本章定义的版本管理总体流程适用于所有需要通过OTA(Over‑The‑Air)方式对嵌入式设备固件进行远程升级的产品线。典型的适用场景包括:
- 消费电子:智能家居网关、可穿戴设备、扫地机器人等需要固件迭代的终端产品。
- 汽车电子:T‑Box、IVI(车载信息娱乐系统)、ECU(电子控制单元)的固件升级。
- 工业物联网:远程传感器、边缘计算节点的固件推送与漏洞修复。
- 医疗/安防:需要满足合规审计要求,对固件版本进行严格追溯的场景。
提示: 版本管理不是简单的“文件重命名”。它必须覆盖从构建产物生成、签名、发布、部署到回滚的全生命周期,确保设备在任何时刻都能安全、可追溯地升级到预期版本。
1.2 前置条件
在启动版本管理流程之前,必须完成以下基础设施搭建与规则定义:
- 已建立稳定的CI/CD构建环境,能够自动化输出可重复的构建产物(如
.bin、.hex、.s19)。 - 已为产品线定义统一的版本号规范(推荐遵循 Semantic Versioning)。
- 已分配专用存储库(如 S3、Artifactory)用于版本工件的持久化存储。
- 已完成OTA签名用的私钥/公钥基础设施(PKI)部署。
- 已编排OTA平台(如阿里云IoT、华为云OTA、自研平台)上的产品/设备群组。
图1.1 OTA固件版本管理总体流程与责任边界示意图
1.3 操作步骤
- 源代码提交 & CI 触发: 开发人员完成功能或补丁开发后,向受控分支(如
main、release/*)提交代码。提交动作自动触发 CI 管道。 - 构建与打包: CI 系统根据构建脚本编译固件,生成最终交付件(
.bin/.hex),同时生成构建元数据(如构建时间、Git Commit ID)。 - 版本登记与签名: 构建产物被推送至版本管理服务。系统自动分配唯一版本号(如
2.1.0+build.20240501),并使用私钥对固件包进行签名。 - 金丝雀发布(Canary): 将新版本推送至占总量 5% ~ 10% 的预定义设备群组,观察启动、连接、功能等核心指标是否异常。
- 全量部署: 金丝雀观察期(例如 24 小时)通过后,系统逐步扩大发布范围,直至覆盖全部目标设备。
⚠️ 异常回滚分支: 如果在全量部署过程中发现崩溃率上升或关键功能不可用,须立即触发版本回滚。回滚后的代码应进入热修复提交流程,并在修复后重新执行第 2 ~ 5 步。
1.4 输入输出物
| 类别 | 输入物 | 输出物 |
|---|---|---|
| 代码/配置 | 嵌入式 C/C++ 源码、设备树(DTS)、构建配置文件 | 固件二进制(.bin / .hex)、SBOM(软件物料清单) |
| 元数据 | 需求文档、Release Plan | 版本清单 JSON、ChangeLog / Release Notes |
| 签名/安全 | 代码签名私钥(HSM 保护)、证书链 | 签名后的固件包、哈希校验文件(.sha256) |
| 部署策略 | 设备群组划分表、灰度规则 | OTA 任务 ID、部署报告、设备升级状态记录 |
1.5 责任边界
| 角色 | 职责范围 |
|---|---|
| 嵌入式开发 | 负责代码的实现、自测、Pull Request 的发起,确保每次提交都具备可构建性。 |
| QA / 测试 | 负责对金丝雀版本进行功能测试、自动化回归测试,并签署版本准出报告。 |
| DevOps / 平台 | 维护 CI/CD 管道、版本数据库、OTA 分发平台,确保签名与发布流程的可靠性。 |
| 产品管理 | 定义设备群组范围、灰度比例、发布窗口,并在出现重大异常时决策是否回滚。 |
| 运维 / SRE | 监控部署过程中的设备在线率、升级成功率、崩溃率,并在指标恶化时触发告警。 |
1.6 异常处理
异常情况与处置策略:
- 版本号冲突(CI 阻塞): 当新构建的版本号与已存在的版本号重复时,CI 管道应自动失败。处置方案:检查构建计数器或 Commit ID 是否未正确更新,手动重试或重置计数器。
- 签名失败(安全阻断): 签名服务不可用或私钥权限异常。处置方案:立即告警至 DevOps,禁止未经签名的固件包流入 OTA 平台。
- 设备离线(升级不达预期): 部分设备在升级窗口期间离线。处置方案:由 OTA 平台异步重试,超过最大重试次数的设备列入“待处理”列表并通知运维。
- 金丝雀指标恶化(自动回滚): 如果金丝雀设备群的崩溃率超过阈值(例如 2%),平台应自动触发回滚,并锁定该版本禁止全量发布。
1.7 记录材料
每个版本的完整生命周期记录必须被持久化,以备合规审计与问题追踪。典型记录材料包括:
- 版本清单文件: 记录版本号、产物哈希、构建 Commit、签名指纹、发布时间。
- 发布说明(Release Notes): 列举新特性、修复的问题、已知限制。
- OTA 部署报告: 包含目标设备数、成功数、失败数、回滚数、总耗时。
版本清单示例(JSON 格式):
{
"version": "2.1.0+build.20240501",
"product": "SmartSensor-X",
"target_platform": "esp32-s3",
"checksum_sha256": "a1b2c3d4e5f678901234567890abcdef1234567890abcdef1234567890abcdef",
"signature_algorithm": "ECDSA-P256",
"release_date": "2024-05-01T10:30:00Z",
"deployment_strategy": "canary",
"change_log_url": "https://artifact.example.com/release-notes/v2.1.0.md"
}
1.8 验收标准
✅ 流程验收检查点:
- 每个构建产物都有一个全局唯一的版本号,且与源代码 Commit 一一对应。
- 设备端能够验证固件包的签名完整性,拒绝运行未签名或签名无效的固件。
- OTA 平台能够实时显示部署进度,并提供按设备粒度的升级成功/失败明细。
- 从“触发回滚”到“全量设备回退至上一稳定版本”的流程在 30 分钟内可完成。
- 版本记录(含回滚记录)在审计系统中至少保留 180 天且不可篡改。