ANT在配置管理中的应用

来源:互联网 发布:ubuntu shell 脚本 编辑:程序博客网 时间:2024/06/05 08:23

请注明出处:http://blog.csdn.net/toella/article/details/7335236

        由于平时工作比较散,各个项目管理方式不同,每次发布、备份、打标、打包等管理要求各不相同,因此每次凑在一起就很浪费时间,为了很好很安全很准确的进行配置管理,工作统一用ANT进行,以下是工作中的应用描述,仅供参考。

        而我们的配置管理用了CVS、VSS、协同,考虑到实际使用的灵活性,我将CVS除add功能及协同的功能外的所有功能都使用ANT来操作,减少了我大量的工作量,同时出错率降低了,每次还有日志跟踪每次的操作是否顺利完成或出错。

注意:当备注“<--”和“-->”之间存放过多代码后,程序将会无法辨识而不能正确执行代码,因此备注中尽量不要保存正式代码。

 

一、打标

下载版本日志的主要语句如下:

//指定下载的CVS库及目录、文件

<property name="cvsroot" value="MC" />

<property name="cvsproject1" value="MC_SERVICE_CLIENT\版本日志.txt" />

//登陆CVS

<cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />

//下载版本日志文件

<cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="版本日志.txt" command="commit -m '${message}'" dest="${locall.backup.dir}/${today}/${cvsprojecta1}" passfile="ant-cvs.cvspass" />

下载下来的版本日志被分别放入相应的项目目录里,打开查看今天该打标的标号如:v1_0_2(20091009),然后就可以对起打标了,其主要代码如下:

//指定打标的CVS库及目录

<property name="cvsroot" value="MC" />

<property name="cvsproject1" value="MC_SERVICE_CLIENT" />

//指定打标的标号

<property name="tag1" value="v1_0_2(20091009)" />

//登陆CVS

<cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />

//打标

<cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="rtag -f ${tag1}" dest="." passfile="ant-cvs.cvspass" />

//删除标号,当打标错误,可以删除该标记

<cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="rtag -d ${tag1}" dest="." passfile="ant-cvs.cvspass" />

 

二、对某指定日期时间打标

有时需要对某天某时刻的代码版本进行打标,这时的主要代码如下:

//指定CVS库

<property name="cvsroota" value="workflow" />

//指定打标的模块

       <property name="cvsprojecta2" value="BPMApplication" />

//指定打标的标号

<property name="taga2" value="v_2_2_7(20091009)" />

//指定想要被打标的日期时间

<property name="datatimea2" value="2009-10-17 12:00:00" />

//登陆CVS

<cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroota}" password="${pwd}" passfile="ant-cvs.cvspass" />

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroota}" package="${cvsprojecta2}" command="rtag -D '${datatimea2}' ${taga2}" dest="." passfile="ant-cvs.cvspass" />

 

三、新建分支

//指定CVS库

       <property name="cvsroot" value="oaTOP" />

//指定分支的模块

       <property name="cvsproject" value="CMP" />

//指定被分支的版本

    <property name="tag" value="v4_5_5(20090820)" />

//指定分支名称

       <property name="tagB" value="B_v4_5_5" />

//登陆CVS

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />     

//新建分支

     <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject}" command="rtag -b -r ${tag} ${tagB}" dest="." passfile="ant-cvs.cvspass" />

 

四、对分支打标

//指定CVS库

       <property name="cvsroot" value="oaTOP" />

//指定分支的模块

       <property name="cvsproject" value="CMP" />

//指定被分支的版本

    <property name="tag" value="v4_5_5(20090820)" />

//指定分支名称

       <property name="tagB" value="B_v4_5_5" />

//对分支打标的标号

<property name="tagB1" value="Root_B_v4_5_6" />

//登陆CVS

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />     

//对指定分支进行打标

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject}" command="rtag -r ${tagB} ${tagB1}" dest="." passfile="ant-cvs.cvspass" />

 

五、下载CVS库内容

//指定CVS库

       <property name="cvsroota" value="workflow" />

//指定下载的模块

       <property name="cvsprojecta2" value="BPMApplication" />

//登陆CVS库

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroota}" password="${pwd}" passfile="ant-cvs.cvspass" />

//下载指定模块内容

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroota}" package="${cvsprojecta2}" command="checkout" dest="${locall.backup.dir}/${today}" passfile="ant-cvs.cvspass" />

 

六、下载CVS分支内容

//指定CVS库

       <property name="cvsroot" value="oaTOP" />

//指定分支的模块

       <property name="cvsproject" value="CMP" />

//指定被分支的版本

    <property name="tag" value="v4_5_5(20090820)" />

//指定分支名称

       <property name="tagB" value="B_v4_5_5" />

//登陆CVS

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />     

//下载指定分支内容

              <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject}" command="checkout -r ${tagB}" dest="${locall.backup.dir}/${today}" passfile="ant-cvs.cvspass" />

 

七、备份

VSS的备份,主要代码如下:

//指定vss本地安装目录vss命令所在目录

<property name="vss.ssdir" value="C:\Program Files\Microsoft Visual Studio\VSS\win32" />

//指定vss库

<property name="vss.svrdir" value="\\10.17.0.222\any3_amp" />

//指定备份的所在目录

<property name="vss.path" value="$/08_发布包/" />

//登陆VSS服务器

    <exec executable="cmd">

    <arg value="/c"/>

    <arg value="net use \\10.17.0.222\ipc$ /del"/>

<arg value="net use \\10.17.0.222\ipc$ /user:username password"/>

//登陆vss库,在使用vssadd时,必须使用vsscp,两者是配套使用的。

<vsscp vsspath="${vss.path}"

                     login="${username},${pwd}"

                        ssdir="${vss.ssdir}"

                        serverpath="${vss.svrdir}"

              />

//添加备份内容到指定vss库中指定目录中

       <vssadd localpath="${locall.backup.dir}\${today}"

                   login="${username},${pwd}"

                         ssdir="${vss.ssdir}"

                         serverpath="${vss.svrdir}"

                         recursive="true"

                         comment="add new files"

                         autoresponse="Y"

              />

 

八、修改备份

当某个备份项目产生变化需要覆盖备份时,主要代码如下:

//指定vss本地安装目录vss命令所在目录

    <property name="vss.ssdir" value="C:\Program Files\Microsoft Visual Studio\VSS\win32" />

//指定vss库

        <property name="vss.svrdir" value="\\10.17.0.222\any3_esp" />

//指定要修改的备份包

       <property name="vss.path" value="$/11_发布包/20090915/ESP发布包(was)20090915.rar" />

//登陆VSS服务器

    <exec executable="cmd">

    <arg value="/c"/>

    <arg value="net use \\10.17.0.222\ipc$ /del"/>

<arg value="net use \\10.17.0.222\ipc$ /user:username password"/>

//下载要修改的备份包

       <vsscheckout vsspath="${vss.path}"

               localpath="${locall.backup.dir}/${today}"

               login="${username},${pwd}"

                     ssdir="${vss.ssdir}"

                     serverpath="${vss.svrdir}"

                     recursive="true"/>

//上传要修改的备份包

       <vsscheckin vsspath="${vss.path}"

               localpath="${locall.backup.dir}/${today}"

               login="${username},${pwd}"

                     ssdir="${vss.ssdir}"

                     serverpath="${vss.svrdir}"

                     recursive="true"

                     autoresponse="Y"

                     comment="Modified by automatic build"/>

 

九、备份到CVS

备份到CVS上一定要注意上传的顺序:

1、 添加根目录文件

2、 添加子目录

3、 添加子目录下文件

一定要一步一步来,否则会出错。

//登陆CVS

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />

//添加目录到CVS

//cvs add foldname

//cvs commit -m "test" foldname

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="add" dest="foldname所在目录/foldname" passfile="ant-cvs.cvspass" />

<cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="commit -m '${message}'" dest="foldname所在目录/foldname" passfile="ant-cvs.cvspass" />

//添加文件到CVS

//cvs add file2.bak 这里的file2.bak可以直接用*.*代替,表示添加上传所有文件

//cvs commit -m "test" file2.bak

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="add" dest="file2.bak所在目录/file2.bak" passfile="ant-cvs.cvspass" />

<cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="commit -m '${message}'" dest="file2.bak所在目录/file2.bak" passfile="ant-cvs.cvspass" />

 

十、获取备份

当实施申请提供某备份时,其主要代码如下:

//指定vss本地安装目录vss命令所在目录

    <property name="vss.ssdir" value="C:\Program Files\Microsoft Visual Studio\VSS\win32" />

//指定vss库

        <property name="vss.svrdir" value="\\10.17.0.222\any3_cobble" />

//指定备份所在目录及想要获取的备份包名

       <property name="vss.path" value="$/02_协同办公(Any3_cobble)/B_对外输出项/02-对外发布/a.完整包/CMP_v4.5.6(20091009).rar" />

//登陆VSS服务器

    <exec executable="cmd">

    <arg value="/c"/>

    <arg value="net use \\10.17.0.222\ipc$ /del"/>

<arg value="net use \\10.17.0.222\ipc$ /user:username password"/>

//获取备份包

       <vssget vsspath="${vss.path}"

               localpath="${locall.backup.dir}/${today}"

               login="${username},${pwd}"

                     ssdir="${vss.ssdir}"

                     serverpath="${vss.svrdir}"

                     autoresponse="Y"

                     recursive="true"

                     quiet="true"/>

 

十一、登记

//指定CVS库

<property name="cvsroot" value="bpms_release" />

//指定登记文件

<property name="cvsproject1" value="业务流程发布管理\产品发布记录\BPMs产品发布记录表.xls" />

<property name="cvsproject2" value="业务流程发布管理\产品发布记录\BPMs产品版本管理.xls" />

//指定登记配置文件上传目录

<property name="cvsprojecta1" value="业务流程发布管理\产品发布记录\" />

//登陆CVS

       <cvspass cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" password="${pwd}" passfile="ant-cvs.cvspass" />

//下载登记文件

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject1}" command="checkout" dest="${locall.backup.dir}/${today}" passfile="ant-cvs.cvspass" />

       <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="${cvsproject2}" command="checkout" dest="${locall.backup.dir}/${today}" passfile="ant-cvs.cvspass" />

//上传登记配置文件

     <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="BPMs产品发布记录表.xls" command="commit -m '${message}'" dest="${locall.backup.dir}/${today}/${cvsprojecta1}" passfile="ant-cvs.cvspass" />

     <cvs cvsroot=":pserver:${username}:${pwd}@10.17.8.222/${cvsroot}" package="BPMs产品版本管理.xls" command="commit -m '${message}'" dest="${locall.backup.dir}/${today}/${cvsprojecta1}" passfile="ant-cvs.cvspass" />

 

原创粉丝点击