8.4 自动打包
如何判断一个公司的无线App技术水平是作坊式开发,还是企业级开发?其中很重要的一个指标就是App是否支持自动打包。
对于只有几个人的软件作坊,往往是测试人员找开发人员用Eclipse打一个包,安装在测试机上,然后进行测试。这种手动打包的方式问题很多,经常发生测试人员发现新包有问题,然后又去找开发人员检查问题,重新打包。这样往返几次,极大地浪费了开发人员和测试人员的时间。
新包有问题一般是因为:开发人员没有获取最新的代码就进行打包工作了,于是其他人提交的代码和功能不在这个包中。另一方面,如果有人提交了不能编译的代码,会导致其他开发人员更新代码后不能编译调试。
想解决这些问题,只能引入自动打包机制,大致的思路是:
1)我们需要有一台打包服务器,它能从代码服务器自动获取最新的代码、编译、打包,发邮件通知团队成员打包结果。
2)提供一个大家都可以访问的Web页面,为不同项目建立不同的打包机制。要同时提供自动和手动两种触发打包的方式。
自动打包,也就是Daily Build,每天设定一个时间,一般是深夜大家都下班的时间。自动打包可以确保如果打包失败,会发邮件通知,第二天上班,会有人立刻修复导致编译不通过的bug。
手动打包,为测试人员提供一个“打包”按钮,这样他们就可以根据需要随时打包,比如开发人员提交代码修复了一个bug,测试人员要验证这个bug,就在上述的Web页面上点击“打包”按钮就可以了。
3)在这台测试服务器上部署Web服务器,可以浏览每天打出的安装包清单,从而可以直接下载任意安装包并安装到测试机上。
基于此,我们选用CCNET这个工具。CCNET提供手动打包的按钮,以及自动打包的设置。CCNET来驱动Ant执行打包脚本进行打包工作。因为CCNET仅支持在Windows环境安装,所以我们选用Windows 2003作为我们的打包服务器。同时,我们在这台服务器上安装IIS,使包的存放地址可以通过http进行访问。当然,你也可以选用别的服务,比如Tomcat。
接下来我将详细介绍怎样组装这些技术和工具,搭建出我们想要的自动化打包机制。
8.4.1 安装和配置各种软件
安装步骤如下:
1)在服务器上安装Java SDK。注意,请安装1.6.0版本的jdk,1.7版本的打包时会有问题。
2)在服务器上安装Ant,版本为1.9.2。注意,请安装带有antcontrib扩展的Ant,它提供了for和if语句,能帮我们做更多的事情。
定义3个全局变量,末尾记得加分号,如表8-2所示。
表8-2 定义一些全局变量
3)在服务器上安装Android SDK,我的demo是基于sdk-19的,大家可以根据自己的sdk版本配置自己的安装包。
4)在服务器上安装IIS。
5)在服务器上安装.NET Framework 3.5或以上版本。
6)到CCNET官方网站下载CCNET的最新版本,目前为1.8.5。
定义1个全局变量,末尾记得加分号,如表8-3所示。
表8-3 定义一些全局变量
注意,在安装CCNET之前,请确保已经安装了IIS。
8.4.2 准备Ant打包脚本
我们仍然使用上一节介绍的daily.xml脚本,它将生成两个包,正式包和Monkey包。如果大家还想生成其他的包,只需要配置dailybuild.xml脚本即可,在打包前使用正则表达式修改某个文件的值。
因为CCNET目前不支持直接执行Ant脚本,所以我们要额外编写一个bat脚本,由CCNET通过执行bat文件来间接执行Ant脚本dailybuild.xml。
这个bat脚本的内容如下,我们将其命名为dailybuild_1.1.0.bat:
dailybuild_1.1.0.bat: ant -file C:\Source\ProjectForAntBuild_1.1.0\dailybuild.xml -D app.source.path="C:\Source\ProjectForAntBuild_1.1.0"
8.4.3 配置CCNET
CCNET的关键就在ccnet.config这个配置文件上,它位于以下目录中:
C:\Program Files\CruiseControl.NET\server
我们使用CCNET主要做3件事情:
·根据SVN地址获取相应的代码。
·执行打包脚本。
·发邮件通知,定制成功和失败两种情况下的邮件格式。
8.4.4 搭建IIS站点下载apk包
执行CCNET每日自动打包,日积月累,在存放打包文件的目录下将存在大量的子目录,如图8-3所示。
图8-3 ProjectForAntBuild目录下的子目录
我们需要提供一个内部的Web站点,指向ProjectForAntBuild这个目录,从而公司内部的所有同事随时都可以下载apk进行测试。
提示 配置CCNET和IIS
原本写了8页来介绍如何配置CCNET和IIS,后来发现这与本书主题不符,于是就把这部分内容上传到我的博客空间,请访问以下地址下载这份配置文档:
http://files.cnblogs.com/files/Jax/config.zip
8.4.5 自动打包流程小结
至此,一套自动打包的流程机制全都介绍完毕。最后补充一下,如果过渡到下一次迭代,版本从1.1.0变为1.2.0,我们又要在自动打包中做哪些工作呢?
1)在C:\ProjectForAntBuild\bat目录下,新建一个dailybuild_1.2.0.bat文件,内容与dailybuild_1.1.0.bat类似,只是要修改传递到Ant脚本的参数,如图8-4所示。
图8-4 在bat目录下新建一个dailybuild_1.2.0.bat文件
2)修改源代码中AndroidManifest.xml文件中的版本号。
3)修改ccnet.config文件,在里面新增一个project,可以复制一份1.1.0版本的project节点内容,但是其中的1.1.0要全都改为1.2.0。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论