背景简介
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命令交互等)。
AliOS Things 持续集成系统的架构如上图所示。系统目前主要支持code.aliyun代码仓库(github支持添加中)。除代码仓库外,系统主要还包括代码检查与编译系统(Precheck & Prebuild),自动测试平台和uDevice Center在线设备平台。下面我们将详细介绍各项子系统的功能。
Precheck代码检查系统
Precheck 是自动化的代码静态扫描和质量监控系统,能帮助开发者提高代码质量,预防代码中的潜在风险,提高开发效率。系统的大致工作流程为:
- 用户提交代码到仓库,仓库发送请求给precheck平台;
- 平台会自动获取用户所提交的代码,pull到本地,进行pmd,findbugs,androidlint 等静态代码扫描(对扫描出来的告警做增量存量判断);
- 执行完成后向仓库提交对应的comments(并自动通过邮件发送报告给用户)。
Precheck系统架构如下图所示。系统是一个弹性扩容的架构,可以方便地根据开发需求增减服务容量。
Prebuild分布式编译系统
Prebulild 是分布式的编译系统,使用机器集群来自动完成AliOS Things在多样的嵌入式平台下的代码编译构建,帮助开发者快速验证所提交代码的编译正确性。系统的大致工作流程为:
- 开发者提交代码到仓库,仓库触发Prebuild系统启动自动编译任务;
- Prebuild系统利用集群分布式地完成编译构建,并将编译结果报告给仓库;
- 编译通过的话,Prebuild系统会触发后端的自动测试的运行
Prebuild系统的架构如下图所示。Prebuild系统是全Docker化的系统,能很方便快速地按需增减容量。
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系统的架构如下图所示,系统具有很强的扩展性。
小结
持续集成(CI)系统支撑着AliOS Things的快速进化。后续我们也计划把这套能力开发给广大的开发者和合作伙伴,共同提升物联网时代的开发效率。
相关推荐
AliOS Things集成开发环境介绍.pptx
基本操作说明-》AliOS Things Starter Kit用户操作指导_V1.0-20180606 简介-》AliOS Things Starter Kit Brief.pdf 生产软件bin文件-》Starter Kit-20180606.bin 应用指导说明-》AliOS Things Starter Kit ...
这是AliOS Things Developer Kit开发板v1.2原理图 注意:这个原理图使v1.2版本的,官方一共出了两个版本,v1.2和v1.3,1.3的版本没有流出原理图,因为这个板卡官方早就停止维护了。1.3版本的板卡,j801接口,v1.2原理...
阿里云物联网操作系统AliOS Things是面向IoT领域的一款轻量级操作系统,旨在为各种智能硬件提供稳定、高效、安全的运行平台。在这个特定的场景中,“AliOS-Things实现图片显示及文字跳动显示”意味着它支持在设备的...
本项目“AliOS-Things2.1.0-helloworld.zip”是基于该操作系统的一个示例工程,用于帮助初学者理解如何在MDK(Keil uVision)开发环境中集成并运行AliOS Things。下面我们将深入探讨这个项目中的关键知识点。 首先...
本文主要介绍AliOS Things的操作系统源码结构以及其编译系统。AliOS Things是一个实时操作系统(RTOS),适用于物联网(IoT)设备的应用开发。HaaS(硬件即服务)是基于AliOS Things开发的一套物联网应用开发课程,...
AliOS Things物联网操作系统,采用弹性内核,支持Python和JavaScript轻应用,主打“易上手”。AliOS Things 支持多种CPU架构,包括:ARM,C-Sky,MIPS,RISCV等。AliOS Things 适配了分层架构和组件架构。所有的模块...
AliOS Things 是一个由阿里云推出的物联网操作系统,旨在为 IoT(物联网)领域提供高可伸缩性的解决方案。该系统首次发布于2017年杭州云栖大会,作为 AliOS 家族的一员,其主要目标是建立云端一体化的基础设施。...
本课程文档是关于AliOS Things命令行操作的详细介绍,涵盖了CLI(命令行接口)原理、常用命令介绍以及如何在AliOS Things平台上添加自定义命令。下面将详细介绍这些知识点。 首先,CLI是命令行接口(Command Line ...
本文档将从AliOS Things的基础出发,介绍其高级操作系统(AOS)API及硬件抽象层(HAL)API。 ### AOS API介绍 AliOS Things 的 AOS API 位于系统的软件层,主要处理任务管理、同步机制、消息队列、定时器、内存管理...
标题《4_1_AliOS Things网络篇之netmgr.pdf》和描述《HaaS物联网应用开发课程》揭示了文档的主要内容是关于AliOS Things操作系统中的Netmgr网络管理模块的详细介绍。Netmgr是AliOS Things操作系统里,提供Wi-Fi网络...
代码基于stm32cubemx核心stm32L496。 Alios Things Developer Kit 开发板测试通过。
其次,AliOS Things提供了丰富的开发工具,包括了组件仓库、CI/CD pipeline、测试脚本等。开发者可以使用这些工具来提高开发效率,降低开发门槛。 此外,AliOS Things还提供了一个强大的云端连接功能,包括了云端...
AliOS Things是阿里云推出的万物互联时代的操作系统,旨在解决当前物联网终端开发的痛点,提供一个功能完备、可配置性高、轻量级、实时的操作系统解决方案。AliOS Things是一个基于内核的实时操作系统,支持ARM、...
【标题】"necleo-f401re板子跑AIios-things系统实现点亮LD2"揭示了基于STM32F401RE微控制器的嵌入式开发过程,结合了ALiOS Things操作系统,实现了对LED灯(LD2)的控制。这个项目的核心是将物联网(IoT)技术与微控制...