Jenkins + Android/WinRT 运行单元测试

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值