摘要: AliOS Things 在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战.同时物联网硬件碎片化,资源紧张,对持续集成(CI)系统也提出了特殊的要求.本文介绍 AliOS Things 的 CI 系统的实现方式及思考.
http://click.aliyun.com/m/41052/ 背景简介
AliOS Things 是一款由阿里巴巴开发的轻量级物联网操作系统.拥有丰富的组件(实时操作系统内核,连接协议库,文件系统,libc 接口,FOTA,Mesh,语音识别,安全等),并支持多样的芯片架构(ARM 系列,Xtensa,C-Sky 等).可广泛应用在智能家居,智慧城市,工业等领域,使万物互联更容易,降低物联网开发门槛.
AliOS Things 在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战.同时,物联网硬件碎片化,资源紧张,对 CI 系统也提出了特殊的要求.本文介绍 AliOS Things 的 CI 系统的实现方式,及思考.
AliOS Things 持续集成(CI)系统简介
AliOS Things 持续集成系统是与代码仓库紧密结合的自动化代码验证测试系统.系统会对开发者提交的每一次代码合入自动运行一次全平台编译和全功能验证测试,并通知开发者测试结果.系统的运行流程为:
开发者提交代码 (merge request)
Precheck+Prebuild 系统自动做代码检查和编译
Prevalidate+uDevice Center 平台自动完成 AliOS Things 各项功能的在设备上的验证测试
与一般的 CI 系统不同,AliOS Things 的功能验证是需要运行在多种多样的嵌入式芯片中的,这里需要解决的难题是:如何屏蔽多样化嵌入式系统的差异来做自动化 CI 测试?我们开发了 uDevice Ceter 来解决这个问题.uDevice Center 是一个在线的设备(模组 / 开发板)开发调试平台,通过统一方式屏蔽了开发板的硬件差异,让自动测试程序可以调用统一的接口来实现测试需要的操作(固件烧写,板子控制(启动 / 停止 / 重启),shell 命令交互等).
{$0 图}
AliOS Things 持续集成系统的架构如上图所示.系统目前主要支持 code.aliyun 代码仓库(github 支持添加中).除代码仓库外,系统主要还包括代码检查与编译系统 (Precheck & Prebuild),自动测试平台和 uDevice Center 在线设备平台.下面我们将详细介绍各项子系统的功能.
Precheck 代码检查系统
Precheck 是自动化的代码静态扫描和质量监控系统,能帮助开发者提高代码质量,预防代码中的潜在风险,提高开发效率.系统的大致工作流程为:
用户提交代码到仓库,仓库发送请求给 precheck 平台;
平台会自动获取用户所提交的代码,pull 到本地,进行 pmd,findbugs,androidlint 等静态代码扫描(对扫描出来的告警做增量存量判断);
执行完成后向仓库提交对应的 comments(并自动通过邮件发送报告给用户).
Precheck 系统架构如下图所示.系统是一个弹性扩容的架构,可以方便地根据开发需求增减服务容量.
{$1 图}Prebuild 分布式编译系统
Prebulild 是分布式的编译系统,使用机器集群来自动完成 AliOS Things 在多样的嵌入式平台下的代码编译构建,帮助开发者快速验证所提交代码的编译正确性.系统的大致工作流程为:
开发者提交代码到仓库,仓库触发 Prebuild 系统启动自动编译任务;
Prebuild 系统利用集群分布式地完成编译构建,并将编译结果报告给仓库;
编译通过的话,Prebuild 系统会触发后端的自动测试的运行
Prebuild 系统的架构如下图所示.Prebuild 系统是全 Docker 化的系统,能很方便快速地按需增减容量.
{$2 图}Prevalidate+uDevice Center 自动测试验证系统
Prevalidate 是一个通用自动化测试平台,其能力包括:组织管理用户编写的测试程序 (java/python/shell),将测试程序有机组合为测试任务,按需求创建 / 排队 / 分发 / 执行 / 监控 / 管理测试任务,获取测试任务执行结果并通知用户等.Prevalidate 系统能在 PC 上运行各种程序,但并不能运行 AliOS Things 在各种嵌入式硬件上的固件并完成功能验证,所以我们还开发了 uDevice Center,一个在线的硬件(模组 / 开发板 / 设备)开发测试平台.uDevice Center 用网络连接着 AliOS Things 支持的各种硬件(开发板 / 模组 / 设备等),并通过统一的接口屏蔽了各种硬件在操作控制上的差异,从而让自动测试程序能够统一操作各种不同的开发板.uDevice Center 也容易扩展对接各种 AliOS Things 支持的设备.
在这套系统中,Prevalidate 管理并运行自动测试程序,而 uDevice Center 为自动测试程序提供交互运行的具体硬件.我们开发了 AliOS Things 的各项功能测试程序并上传到 Prevalidate 平台作为测试项,再把相关联的测试项组合成可以被触发执行的 PV 测试任务.当用户提交代码并被 Prebuild 系统编译通过后:
Prebuild 系统会触发 Prevalidate 系统创建 PV 测试任务;
Prevalidate 系统对 PV 测试任务排队,从系统的 slave cluster 中选择合适的空闲机器执行任务;
任务的各项测试脚本被执行,测试程序从 uDevice Center 平台分配合适型号的设备,将编译镜像烧录到设备中,并使用标准接口与设备交互,完成 AliOS Things 各项功能的测试;
Prevalidate 系统将测试结果报告给代码仓库,并邮件通知相关人员.
Prevalidate+uDevice Center 系统的架构如下图所示,系统具有很强的扩展性.
{$3 图} 小结
持续集成(CI)系统支撑着 AliOS Things 的快速进化.后续我们也计划把这套能力开发给广大的开发者和合作伙伴,共同提升物联网时代的开发效率.
来源: http://geek.csdn.net/news/detail/252912