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

摘要: 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命令交互等)。

图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从青铜到王者,助力企业轻松上云的四大绝招!

戳蓝字“CSDN云计算”关注我们哦!IBM在7月份发生了很多大事,其中这两件你知道吗?第一,IBM(NYSE: IBM)与美国电话电报公司(AT&T)(NYSE: T)达成一项为期多年的战略联盟…

PyODPS 中使用 Python UDF

摘要: PyODPS 中使用 Python UDF 包含两方面,一个是直接使用,也就是在 MaxCompute SQL 中使用;一个是间接的方式,也就是 PyODPS DataFrame,这种方式你不需要直接写 Python UDF,而是写普通的 Pyt…

无服务器计算,如何节省时间和成本?

戳蓝字“CSDN云计算”关注我们哦!译者 | 风车云马出品 | CSDN云计算(ID:CSDNcould)为了解决面临的业务问题,通常需要开发人员花费一定的时间编写完代码,再交由运维工程师确保正常的运行,整个过程…

一张图看懂阿里云新发布的物联网设备上云神器——HiTSDB + IoT套件

近日,阿里云针对物联网企业遇到的设备认证困难、安全问题突出等问题,发布了HiTSDB IoT 套件的一体化解决方案,能够支持物联设备快速上云,高效设备管理,数据安全,低成本海量数据存储,实时掌握设备…

Spark精华问答 | 谈谈spark中的宽窄依赖

总的来说,Spark采用更先进的架构,使得灵活性、易用性、性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性有待进一步提高。我总结,具体表现在如下几个方面。1Q:Spark RDD是什么?A&am…

阿里云产品头条(2017年12月刊)

摘要: 一、新产品发布1、云防火墙 商业化 发布云防火墙是一款云环境下的防火墙产品,首创了基于业务可视的结果,实现业务梳理和业务隔离的技术。适用于互联网/通用/游戏/金融/新零售/…

一张图解读阿里云数据管理DMS企业版

摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮助企业安全、高效的使用数据库…

架构设计之「 微服务入门 」

戳蓝字“CSDN云计算”关注我们哦!作者 | 奎哥来源 | 不止思考微服务这几年不可谓不火,很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展,另一方面也可以看到一些盲目追技术热点的行为所带来…

提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮助企业安全、高效的使用数据库…

flowable实战(五)flowable驳回/退回上一步/退回到

一、驳回/退回上一步/退回到(历史某一个节点) 我们经常需要工作流中退回上一步,或者退回历史某一个节点。但由于流程的场景是很复杂的,回退有以下一些场景:1.串行路线上的退回:流程中没有任何网关&#xff…

全链路压测一招搞定,阿里云性能测试铂金版发布

摘要: 阿里云性能测试(Performance Testing Service)是卓越的SaaS性能测试平台,具备强大的分布式压测能力,可模拟海量用户的真实业务场景,让所有性能问题无所遁形。近日,PTS宣布推出了基于阿里双…

老司机教你分析日志:分析用户的地理位置信息

摘要: 地理位置的需求 通常我们分析用户的需求,了解到用户当前位置在哪里非常重要,例如,可以根据用户的地理位置,针对性的推广本地广告。 通常,我们可以在客户端获取定位权限来获取GPS信息。但是如果用户关…

java中的switch的规则_细细讲述Java技术开发的那些不为人知的规则

本文介绍的Java规则的说明分为3个主要级别,中级是平时开发用的比较多的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。一、在finally方法里关掉input或者output资源方法体里面定义了input或者output流的…

华为,百度豪投,这类程序员要再次上榜了!

前不久百度AI开发者大会,李彦宏高调宣布百度AI技术;同时,AI测试权威软件AI Benchmark的测试数据显示,中国华为研发的7nm旗舰手机芯片麒麟810的AI分数,远远超过美国高通骁龙855了!早前华为就宣布&#xff1a…

flowable实战(六)flowable的意见表和附件表应用

一、act_hi_comment和act_hi_attachment两表表,前者意见表后者是附件表 意见表它里面有一个类型type字段,分别是comment代表意见(这个type可以自定义,例如自定义为:通过/退回/提前终止),缺省提供了comment&#xff0c…

Serverless在游戏、电商行业的一个运用场景示例

摘要: Serverless 是一种架构理念,具有自己的独特的优势和适用场景。本文以使用阿里云函数计算为例,构建一个简单具体的microservice为例,看看这种架构是如何达到快速开发和节约运维成本的。 点此查看原文:http://clic…

SDN精华问答 | SDN的核心技术是什么?

SDN火热了好一阵子,无论运营商、政府企业、投资机构,一段时间,不知道SDN、不能甩几个SDN相关的名词术语,似乎都落后于时代了。今天,就来看看关于SDN的精华问答吧。1Q:SDN的目的是什么? A&#x…

RocksDB 写入流程详解

摘要: 最初的写入流程,继承自 leveldb,多个 写线程组成一个 group, leader 负责 group 的 WAL 及 memtable 的提交,提交完后唤醒所有的 follwer,向上层返回。 支持 allow_concurrent_memtable_write 选项&a…

Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)

摘要: 标签 PostgreSQL , Greenplum , varbitx , roaring bitmap , pilosa , varbit , hll , 多阶段聚合 背景 roaring bitmap是一个压缩比很高同时性能不错的BIT库,被广泛使用(例如Greenplum, ES, InfluxDB. 点此查看原文 标签 PostgreSQL ,…

容器快速入门完全指南

戳蓝字“CSDN云计算”关注我们哦!作者 | JUSTIN来源 | RancherLabs介 绍容器,以及Docker和Kubernetes之类的容器技术已经日益成为许多开发人员工具包中常见的工具。容器化的核心目标是提供一种更好的方式,以可预测和便于管理的方式在不同的环…