AliOS Things 持续集成(CI)系统介绍

简介: AliOS Things在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战。同时物联网硬件碎片化,资源紧张,对持续集成(CI)系统也提出了特殊的要求。本文介绍AliOS Things的CI系统的实现方式及思考。

背景简介

AliOS Things 是一款由阿里巴巴开发的轻量级物联网操作系统。拥有丰富的组件(实时操作系统内核,连接协议库、文件系统、libc接口、FOTA、Mesh、语音识别、安全等),并支持多样的芯片架构(ARM系列,Xtensa,C-Sky等)。可广泛应用在智能家居,智慧城市,工业等领域,使万物互联更容易,降低物联网开发门槛。

AliOS Things在快速的迭代进化之中,如何保证提交的代码质量,并保证在各个硬件平台上的稳定性,是一个非常大的挑战。同时,物联网硬件碎片化,资源紧张,对CI系统也提出了特殊的要求。本文介绍AliOS Things的CI系统的实现方式,及思考。

AliOS Things 持续集成(CI)系统简介

AliOS Things 持续集成系统是与代码仓库紧密结合的自动化代码验证测试系统。系统会对开发者提交的每一次代码合入自动运行一次全平台编译和全功能验证测试,并通知开发者测试结果。系统的运行流程为:

  1. 开发者提交代码(merge request)
  2. Precheck+Prebuild系统自动做代码检查和编译
  3. Prevalidate+uDevice Center平台自动完成AliOS Things各项功能的在设备上的验证测试

与一般的CI系统不同,AliOS Things的功能验证是需要运行在多种多样的嵌入式芯片中的,这里需要解决的难题是:如何屏蔽多样化嵌入式系统的差异来做自动化CI测试?我们开发了uDevice Ceter来解决这个问题。uDevice Center是一个在线的设备(模组/开发板)开发调试平台,通过统一方式屏蔽了开发板的硬件差异,让自动测试程序可以调用统一的接口来实现测试需要的操作(固件烧写,板子控制(启动/停止/重启),shell命令交互等)。

CI系统

AliOS Things 持续集成系统的架构如上图所示。系统目前主要支持code.aliyun代码仓库(github支持添加中)。除代码仓库外,系统主要还包括代码检查与编译系统(Precheck & Prebuild),自动测试平台和uDevice Center在线设备平台。下面我们将详细介绍各项子系统的功能。

Precheck代码检查系统

Precheck 是自动化的代码静态扫描和质量监控系统,能帮助开发者提高代码质量,预防代码中的潜在风险,提高开发效率。系统的大致工作流程为:

  1. 用户提交代码到仓库,仓库发送请求给precheck平台;
  2. 平台会自动获取用户所提交的代码,pull到本地,进行pmd,findbugs,androidlint 等静态代码扫描(对扫描出来的告警做增量存量判断);
  3. 执行完成后向仓库提交对应的comments(并自动通过邮件发送报告给用户)。

Precheck系统架构如下图所示。系统是一个弹性扩容的架构,可以方便地根据开发需求增减服务容量。

precheck

Prebuild分布式编译系统

Prebulild 是分布式的编译系统,使用机器集群来自动完成AliOS Things在多样的嵌入式平台下的代码编译构建,帮助开发者快速验证所提交代码的编译正确性。系统的大致工作流程为:

  1. 开发者提交代码到仓库,仓库触发Prebuild系统启动自动编译任务;
  2. Prebuild系统利用集群分布式地完成编译构建,并将编译结果报告给仓库;
  3. 编译通过的话,Prebuild系统会触发后端的自动测试的运行

Prebuild系统的架构如下图所示。Prebuild系统是全Docker化的系统,能很方便快速地按需增减容量。

Prebuild

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系统编译通过后:

  1. Prebuild系统会触发Prevalidate系统创建PV测试任务;
  2. Prevalidate系统对PV测试任务排队,从系统的slave cluster中选择合适的空闲机器执行任务;
  3. 任务的各项测试脚本被执行,测试程序从uDevice Center平台分配合适型号的设备,将编译镜像烧录到设备中,并使用标准接口与设备交互,完成AliOS Things各项功能的测试;
  4. Prevalidate系统将测试结果报告给代码仓库,并邮件通知相关人员。

Prevalidate+uDevice Center系统的架构如下图所示,系统具有很强的扩展性。

Prevalidate

小结

持续集成(CI)系统支撑着AliOS Things的快速进化。后续我们也计划把这套能力开发给广大的开发者和合作伙伴,共同提升物联网时代的开发效率。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
运维 监控 安全
Cisco ISR 4000 Series IOS XE 17.18.1a ED 发布 - 思科 4000 系列集成服务路由器 IOS XE 系统软件
Cisco ISR 4000 Series IOS XE 17.18.1a ED - 思科 4000 系列集成服务路由器 IOS XE 系统软件
112 0
|
2月前
|
机器学习/深度学习 运维 算法
【EI复现】一种建筑集成光储系统规划运行综合优化方法(Matlab代码实现)
【EI复现】一种建筑集成光储系统规划运行综合优化方法(Matlab代码实现)
|
9月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
4月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
169 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
4月前
|
机器学习/深度学习 人工智能 监控
CI/CD与模型监控平台集成MLOps系统实现的全面路径
MLOps是机器学习模型在生产环境中持续优化、部署和维护的关键。通过CI/CD流水线和模型监控平台的结合,可以大大提高模型开发和运维的效率,实现高效、稳定的模型服务。随着AI技术的快速发展,MLOps将在企业级AI应用中发挥越来越重要的作用。
CI/CD与模型监控平台集成MLOps系统实现的全面路径
|
5月前
|
机器学习/深度学习 数据采集 存储
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
本文探讨了朴素贝叶斯算法在处理混合数据类型中的应用,通过投票和堆叠集成方法构建分类框架。实验基于电信客户流失数据集,验证了该方法的有效性。文章详细分析了算法的数学理论基础、条件独立性假设及参数估计方法,并针对二元、类别、多项式和高斯分布特征设计专门化流水线。实验结果表明,集成学习显著提升了分类性能,但也存在特征分类自动化程度低和计算开销大的局限性。作者还探讨了特征工程、深度学习等替代方案,为未来研究提供了方向。(239字)
200 5
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
|
8月前
|
人工智能 监控 数据可视化
Agent TARS:一键让AI托管电脑!字节开源PC端多模态AI助手,无缝集成浏览器与系统操作
Agent TARS 是一款开源的多模态AI助手,能够通过视觉解析网页并无缝集成命令行和文件系统,帮助用户高效完成复杂任务。
3822 13
Agent TARS:一键让AI托管电脑!字节开源PC端多模态AI助手,无缝集成浏览器与系统操作
|
8月前
|
人工智能 BI API
Dify-Plus:企业级AI管理核弹!开源方案吊打SaaS,额度+密钥+鉴权系统全面集成
Dify-Plus 是基于 Dify 二次开发的企业级增强版项目,新增用户额度、密钥管理、Web 登录鉴权等功能,优化权限管理,适合企业场景使用。
1271 3
Dify-Plus:企业级AI管理核弹!开源方案吊打SaaS,额度+密钥+鉴权系统全面集成
|
6月前
|
移动开发 Java 测试技术
HarmonyOS NEXT~鸿蒙系统与mPaaS三方框架集成指南
本文详细介绍了鸿蒙系统(HarmonyOS)与mPaaS框架的集成方法。鸿蒙系统作为华为开发的分布式操作系统,具备分布式架构、微内核设计等特性;mPaaS是蚂蚁金服推出的移动开发平台,提供金融级组件和全生命周期管理能力。文章从环境准备、核心功能集成(如初始化、用户认证、支付功能)、适配问题解决到调试测试及最佳实践,全方位指导开发者高效集成两者。通过遵循指南,可充分利用鸿蒙的特性和mPaaS的金融能力,构建高性能、高安全性的应用,同时避免常见兼容性问题,缩短开发周期。
370 0