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> 代码片段。
自动安装和配置 SOA 组件
当待测试的新 SOA 组件从各个开发团队的 FTP 下载到本地服务器之后,我们就要将它们自动部署到测试服务器上,我们将采用 WebSphere 脚本配置和管理 SOA 组件。