图 2.3 BuildScript 目录下的文件
deployBuild.bat 文件主要用于定义一些 WPS profile 的位置、Build 放置的位置、WPS 登录用户名和密码等信息。
图 2.4 deployBuild.bat 文件的内容
文件中前 6 行都是运行环境的配置信息:
pathProfile: WPS 的 profile 路径。
pathProcServer: WPS 的安装路径。
pathBuildService: service 层 build 的放置目录。
pathBuildUI: UI 层 build 的放置目录。
authStmt: WPS 的用户名和密码,在启动了安全性后用命令行控制 WPS 时需要提供认证信息,在这个示例中我们的用户名和密码都是 IBM。
第七行是调用 buildToTest.py 的 python 文件,后面的数字 (2007102202) 是要安装 build 的版本号,这个版本号需要开发组和测试组共同协商,确定一个 build 的编号规则,自动脚本下载的 Build 号将以此为唯一标识。一般来说可以采用日期 + 序号的方法,如果所示的 2007102202 就表示的是 2007 年 10 月 22 日的第二个 build。
buildtoTest.py 文件主要定义了一些自动化的主要步骤。
import os, os.path from time import strftime,localtime,ctime import urllib import smtplib import sys top_dir = os.getcwd() currentTime = strftime("%Y%m%d", localtime()) # Get Ears retEars = os.system('ant -Dbuild.number=%s -buildfile %s/otherTargets.xml ftp-get-ears ' %(sys.argv[1] ,top_dir + '/Script')) # Uninstall and install UI retunInstall = os.system('%s/uninstallAllUI.bat' %(top_dir + '/Script')) retinstall = os.system('%s/installAllUI.bat' %(top_dir + '/Script')) # Uninstall and install services retunInstall = os.system('%s/uninstallAllApps.bat' %(top_dir + '/Script')) retinstall = os.system('%s/installAllApps.bat' %(top_dir + '/Script')) |
我们在 python 中定义了 3 个重要的任务:
GetEars: 该步骤用到了 ant 脚本 (otherTargets.xml) 的 ftp-get-ears 下载 build 到本地目录中,关于 otherTargets.xml 中 ftp-get-ears 的编写,我们在后面会做一个示例性的介绍。
Uninstall and install UI: 该步骤分别调用了一个卸载旧的 UI 组件 (uninstallAllApps.bat) 和装载新的 UI 组件 (installAllUI.bat) 的批处理命令 , 卸载 UI 的脚本我们将在后面介绍一个自动化框架。
Uninstall and install services: 该步骤和上面基本相似,不同之处是该步骤卸载和安装的对象是 service 的组件,卸载 Service 的脚本我们将在后面介绍一个自动化框架。
otherTargets.xml 的一个下载 Build 的代码片断如下所示:
<target name="ftp-get-ears"> <delete dir="../Build/"/> <mkdir dir="../Build/"/> <ftp action="get" server="127.0.0.1" remotedir="/www/Demo /${build.number}/" userid="IBM" password="IBM"> <fileset dir="../Build"> <include name="**"/> </fileset> </ftp> </target> |
这个 target 由以下几个操作组成:
1. 删除 Build 文件夹:因为每天的 build 都会放入这个目录,为了保证该文件夹下的 build 都是最新的我们会在下载之前将该文件夹删除。
2. 新建 Build 文件夹:用于存放即将下载的新 build。
3. 下载 Build:我们在 <ftp action=”get”> 这个操作里面定义了 FTP 下载所需要的若干参数:
server : FTP 服务器的 IP 地址。
remotedir: FTP 服务器存放 build 的路径。
userid: 登陆 FTP 的用户名。
password: 用户名所对应的密码。
大家从这段代码可以看出 Ant 语言的优点:非常简洁,有强大的类库,能用简短的程序完成复杂的操作。如果还要加入其它的任务,只需要加入 <target></target> 代码片段。