Jenkins + Android/WinRT 运行单元测试

来源:互联网 发布:招行信用卡 知乎 编辑:程序博客网 时间:2024/06/05 14:48

Jenkins native的提供master-slave的架构,可以有效的管理资源,实现分布式的运行。但它有一个前提条件,就是master 和 slave都必需支持Oracle的Java 虚拟机。

在一般的软件开发中,这不会是一个问题。只要在两边同时安装Oracle的JRE就OK了。

但是在Android上,这就成了一个大问题。因为Android上的JVM是一个特殊的JVM,Dalvik.它并不完全兼容Oracle的JVM,因此Jenkins的native master-slave不能简单的部署应用了。

这个问题,早就在stackoverflow(个人最喜欢的一个技术站点)中提出,一直没有解决方案。

同样的问题,发生在WinRT上,WinRT比Android更甚,它根本就不支持Java。

但我们实在是太喜欢Jenkins了,我们希望由Jenkins来管理,来呈现这些Job,怎么办?

这个问题细分下,可以归结为两点: 1) 如何让这些资源(或者说平台)与Jenkins交互, 2) 如何高效利用这些资源。

万能的中间层,永远是解决问题的一把利刃。

在Jenkins和这些平台之间,抽象出一个中间层,定义为ResourcePoolManager, 它隔离了Jenkins和对应的平台,所有的平台向resource pool进行注册,Jenkins向它发起资源请求,由resource pool进行资源的调配。 它解除了Jenkins和平台之间的直接绑定,解放了资源,使得一个资源可以被多个Jenkins job使用,也使得一个Jenkins job可以在多个资源上运行。

通过Jenkins的job在向resource pool的请求中的不同参数的值,由resource pool分配平台,并把对应的参数传送到平台上的一个常驻程序,该程序通过对这些参数的解析,到对应的Samba服务器中下载对应的程序和测试包,并开始测试,最终上传测试结果到对应的Samba目录中,和反馈给resource pool表示运行以完成。再由resource pool 通知Jenkins job任务已完成,请下载测试结果包。Jenkins会自动解析测试结果包,并在UI上呈现和显示结果,以及相应的邮件通知等功能。

这样,普通用户,就可以直接在Jenkins上看到关于本次运行的详细结果,以及错误分析。


0 0
原创粉丝点击