鸿蒙综合讨论/无头 CI 构建

无头 CI 构建

移植工程长大之后,构建必须在无人值守环境可重复。这篇讲无头 CI 构建的组织:环境、流程、产物管理。

▍环境的挑战
鸿蒙构建链对环境有要求:SDK 与工具链版本、NDK、签名材料、预编译依赖栈。CI 机器上逐项对齐:SDK 目录结构与版本固定(版本变更走显式升级流程);预编译栈从统一归档取(哈希校验),而不是各机器自编(那会引入机器差异);签名材料用受控注入(CI 凭据管理,不落仓库)。字体与 locale 等系统依赖最小化——构建机是无人值守的,别依赖任何图形组件。

▍流程设计
流水线分阶段:拉取(源码与子模块、补丁集应用)——构建 native(依赖栈链接、各组件编译)——壳构建与打包——签名——归档。每阶段产物带指纹(哈希清单),下一阶段校验上一阶段产物。失败要可诊断:构建日志分级保存,错误摘要置顶(最后几十行加错误行抽取),别让排查的人翻几万行日志。

▍可重复性
同一输入必须同产物:版本号注入用源码Revision 而不是时间戳;构建目录固定路径(绝对路径进缓存的键,漂移导致缓存失效与产物差异);环境变量白名单化(只留必需的,其余清空——环境噪音是诡异差异的头号来源)。

▍产物的管理
每次构建归档:HAP 包、符号包(见专篇)、变更说明、指纹清单。保留策略按频度(每日构建留一周,发布构建全留)。符号包与发布包一一对应存档——线上崩溃回溯全靠它,丢了就是永远的谜。

▍常见故障
一,CI 与本地不一致:本地能过 CI 挂,九成是环境差异(多出来的本地配置、本地缓存)——对策是本地也走同一脚本入口。二,磁盘膨胀:构建目录与缓存定期清理策略。三,签名材料过期:证书到期前 CI 应有预警任务。

▍建议
投入第一天就上 CI,而不是等团队变大——单人时期 CI 的价值是环境快照与产物可追溯,这些事后补不了。

免费无广告的安装包可以在官网下载体验。
楼主 7 天前
想参与讨论?登录 或 30 秒注册。