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的快速进化。后续我们也计划把这套能力开发给广大的开发者和合作伙伴,共同提升物联网时代的开发效率。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
10天前
|
人工智能 移动开发 IDE
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
钉钉是很多中小企业都爱用的产品,开通账号就能直接使用了,应用生态非常丰富,尤其是AI技术的应用,走在行业前列。但仍有很多企业对于全面拥抱SaaS服务充满了顾虑,尤其在内部资料的管理这块,即使钉钉在线文档已经提供了非常优秀的协作体验,不少客户仍更偏爱私有部署在局域网里面的企业文档管理系统。那么能将企业内部部署的文档管理系统集成到钉钉平台上面,和钉钉文档并行使用呢?市面上又有哪些企业文档管理系统软件支持与钉钉的集成呢?这也是很多企业客户的疑问。
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
|
5天前
|
监控 jenkins 测试技术
持续集成/持续部署(CI/CD)的最佳实践
【6月更文挑战第19天】CI/CD最佳实践概括: 确定CI(集成早期发现错误)和CD(自动化部署)概念,选择适配团队的工具如Jenkins、GitLab CI;编写自动化测试,确保每次提交时运行;实行代码审查和质量检查;自动化构建与部署,利用容器技术;建立监控与反馈机制,快速响应问题;采用分支策略如特性分支和拉取请求;持续学习与改进流程,优化效率和质量。
|
5天前
|
运维 监控 Devops
DevOps实践:持续集成与持续部署(CI/CD)的精髓
【6月更文挑战第17天】本文将深入探讨DevOps文化中的核心实践——持续集成(CI)和持续部署(CD)。我们将从理论出发,逐步过渡到实际操作,介绍如何搭建一个高效的CI/CD流程。文章将涵盖工具选择、流程设计、自动化测试以及监控和反馈机制的建立。通过具体案例分析,揭示成功实施CI/CD的关键因素,并探讨如何在组织内推广这一实践以促进开发和运维之间的协作。
|
24天前
|
人工智能 自然语言处理 安全
构建未来:AI驱动的自适应网络安全防御系统提升软件测试效率:自动化与持续集成的实践之路
【5月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和企业持续运营的关键。传统的安全防御手段,如防火墙和入侵检测系统,面对日益复杂的网络攻击已显得力不从心。本文提出了一种基于人工智能(AI)技术的自适应网络安全防御系统,该系统能够实时分析网络流量,自动识别潜在威胁,并动态调整防御策略以应对未知攻击。通过深度学习算法和自然语言处理技术的结合,系统不仅能够提高检测速度和准确性,还能自主学习和适应新型攻击模式,从而显著提升网络安全防御的效率和智能化水平。 【5月更文挑战第30天】 在快速迭代的软件开发周期中,传统的手动测试方法已不再适应现代高效交付的要求。本文探讨了如
|
26天前
|
监控 测试技术 持续交付
构建高效持续集成系统的策略与实践
【5月更文挑战第28天】 在快速迭代的软件开发过程中,持续集成(CI)系统是确保代码质量和加速交付的关键。本文将探讨构建一个高效、可靠的CI系统的关键策略,并通过实际案例分析如何实现这些策略。我们将讨论自动化测试、容器化部署、监控和日志记录等主题,以及它们如何共同作用以提升开发流程的效率和稳定性。通过实施这些策略,团队可以显著减少集成问题,并缩短从开发到部署的时间。
30 2
|
26天前
|
运维 Kubernetes jenkins
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【5月更文挑战第28天】 在现代软件工程实践中,持续集成(CI)和持续部署(CD)已成为提升开发效率、确保产品质量的关键环节。本文旨在探讨如何利用容器技术构建一套高效、可靠的自动化运维系统,以支持敏捷开发流程和微服务架构。通过对Docker容器及Kubernetes集群管理工具的深入分析,我们提出了一种结合Jenkins实现自动化测试、构建与部署的完整解决方案,并讨论了其在现实业务中的应用效果和面临的挑战。
|
27天前
|
监控 jenkins 测试技术
理解并实现持续集成(CI)与持续部署(CD):加速软件开发的关键步骤
【5月更文挑战第27天】本文介绍了CI/CD在加速软件开发中的关键作用。CI(持续集成)通过频繁集成代码并自动构建测试,减少错误,提高开发速度和代码质量。实现CI需要版本控制系统(如Git)、自动化构建工具(如Jenkins)和测试框架。CD(持续部署)则进一步自动将通过测试的代码部署到生产环境,提供快速反馈,降低风险。实现CD需配置管理工具(如Ansible)、容器技术(如Docker)和云基础设施。CI与CD结合,形成高效开发流程,最佳实践包括保持主干干净、自动化所有流程、持续监控、快速回滚和持续学习。
|
28天前
|
敏捷开发 监控 Devops
构建高效持续集成系统的关键要素
【5月更文挑战第27天】 在现代软件开发过程中,持续集成(CI)已成为确保代码质量和加快交付速度的重要实践。本文将探讨构建一个高效持续集成系统的关键要素,涵盖自动化构建、测试、部署以及监控等方面。我们将通过分析各要素的作用和实施策略,提供一套全面的指南,帮助开发团队优化其CI流程,提升软件项目的可靠性和效率。
|
27天前
|
机器学习/深度学习 敏捷开发 测试技术
深入探索软件测试中的持续集成与持续部署(CI/CD)实践利用机器学习提升网络安全防御效能
【5月更文挑战第27天】 在现代软件开发的快节奏环境中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)已成为确保产品质量和加快交付速度的关键策略。本文将深入探讨CI/CD在软件测试中的应用,分析其对提高自动化测试效率、缩短反馈周期以及优化发布流程的重要性。通过实际案例研究,我们揭示了成功实施CI/CD的最佳实践,并讨论了面临的挑战及其解决方案。
|
9天前
|
存储 监控 Shell
《500 Lines or Less》(2)A Continuous Integration System(持续集成系统)
《500 Lines or Less》(2)A Continuous Integration System(持续集成系统)