锁定老帖子 主题:在ant中使用cvs功能自动完成每日构建。
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-05-17
build.xml <?xml version="1.0"?> <project name="gnt Auto build" basedir="." default="build"> <!-- The CVSROOT value --> <property name="cvsroot" value=":pserver:dhf:@192.168.0.200:D:/cvs_repository_z"/> <property name="cvs.password" value=""/> <property name="ywzcpt.dir" value="${basedir}/ywzcpt"/> <property name="ywzcpt.module.name" value="ywzcpt"/> <property name="zfyw.dir" value="${basedir}/zfyw"/> <property name="zfyw.module.name" value="zfyw"/> <property name="external.dir" value="${basedir}/external"/> <property name="external.module.name" value="external"/> <property name="cvs-op" value="co " /> <!-- Initializing --> <target name="init"> <tstamp> <format property="today" pattern="yyyy-MM-dd hh:mm:ss"/> </tstamp> <echo message="${today}" /> </target> <target name="prepare" depends="init" > <cvspass cvsroot="${cvsroot}" password="${cvs.password}" passfile="ant-cvs.cvspass"/> </target> <target name="external-check-out" depends="prepare"> <cvs cvsRoot="${cvsroot}" package="${external.module.name}" passfile="ant-cvs.cvspass"/> </target> <!-- Retrieve the ywzcpt module --> <target name="ywzcpt-check-out" depends="external-check-out"> <delete dir="${ywzcpt.module.name}"/> <cvs cvsRoot="${cvsroot}" package="${ywzcpt.module.name}" passfile="ant-cvs.cvspass"/> </target> <target name="zfyw-check-out" depends="external-check-out"> <delete dir="${zfyw.module.name}"/> <cvs cvsRoot="${cvsroot}" package="${zfyw.module.name}" passfile="ant-cvs.cvspass"/> </target> <!-- cvs checkout --> <target name="check-out"> <antcall target="external-check-out" /> <antcall target="ywzcpt-check-out" /> <antcall target="zfyw-check-out" /> </target> <!-- build XSP framework --> <target name="build"> <echo message="+=============================================+" /> <echo message="| Start Building GNT for compilation |" /> <echo message="+=============================================+" /> <antcall target="ywzcpt-build" /> <echo message="+=============================================+" /> <echo message="| End Building GNT for compilation |" /> <echo message="+=============================================+" /> </target> <target name="ywzcpt-build" depends="ywzcpt-check-out"> <echo message="+---------------------------------------------+" /> <echo message="| Start Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> <ant antfile="build.xml" dir="${ywzcpt.module.name}" output="ywzcpt.log" /> <property name="ywzcpt.add" value="add ./build/log/*.log ./build/*.jar ./build/*.war"/> <property name="ywzcpt.commit" value="commit -m '${today}' ./build/log/*.log ./build/*.jar ./build/*.war"/> <ant antfile="build.xml" dir="${ywzcpt.module.name}" target="commit-build" /> <echo message="+---------------------------------------------+" /> <echo message="+ End Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> </target> <target name="zfyw-build" depends="zfyw-check-out, ywzcpt-build"> <echo message="+---------------------------------------------+" /> <echo message="| Start Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> <ant antfile="build.xml" dir="${zfyw.module.name}" output="zfyw.log" /> <property name="zfyw.add" value="add ./build/log/*.log ./build/*.jar ./build/*.war"/> <property name="zfyw.commit" value="commit -m '${today}' ./build/log/*.log ./build/*.jar ./build/*.war"/> <ant antfile="build.xml" dir="${zfyw.module.name}" target="commit-build" /> <echo message="+---------------------------------------------+" /> <echo message="+ End Building ywzcpt for compilation |" /> <echo message="+---------------------------------------------+" /> </target> <target name="clean" > <delete dir="${ywzcpt.module.name}"/> </target> </project> ywzcpt/build.xml片断: 主要实现commit功能 <target name="commit-build"> <cvs cvsRoot="${cvsroot}" passfile="${root.dir}/ant-cvs.cvspass" command="${ywzcpt.add}"/> <cvs cvsRoot="${cvsroot}" passfile="${root.dir}/ant-cvs.cvspass" command="${ywzcpt.commit}"/> </target> 最后,在win2k中制定一个计划任务,就可以了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-05-17
不错,好玩:D
|
|
返回顶楼 | |
发表时间:2004-05-20
这也应该是每个公司,晚上做的事。曹晓刚演讲时也说过这个问题。这样每天的问题,在第2天的早上就反映出来了。
|
|
返回顶楼 | |
发表时间:2004-05-28
alanZu 写道 不错,好玩:D
呵呵,好玩的多了。 比如自动进行UT测试。 自动进行Code的格式化。 自动进行Code的规范检测。 自动打包备份。 自动上传到WEB服务器。 自动发送到开发人员的信箱。 。。。。。。。。。。。。。 平均一天要用个10几次。 |
|
返回顶楼 | |
发表时间:2004-05-29
ibeyond 写道 alanZu 写道 不错,好玩:D
呵呵,好玩的多了。 比如自动进行UT测试。 自动进行Code的格式化。 自动进行Code的规范检测。 自动打包备份。 自动上传到WEB服务器。 自动发送到开发人员的信箱。 。。。。。。。。。。。。。 平均一天要用个10几次。 其实,我对每日构建的概念,还是比较模糊。也只是略知一二。只是对这方面比较感兴趣。 我到不觉得挺好玩。我们公司做了每日构建后,每天早上check out最新的版本。如果有问题,编译的错误日志也会放到服务器上,挺舒服的。 但是,这只是万里长征的第一步。如果曹晓刚或者有这方面的同仁能看到这个贴子的话,也希望他能说说,你们是怎么做的。 |
|
返回顶楼 | |
发表时间:2004-05-30
CruiseContorl
http://cruisecontrol.sourceforge.net/ 可以定时根据ant脚本构建 提供E-mail通知 还有一个web界面 |
|
返回顶楼 | |
发表时间:2004-05-31
不用CruiseContorl,ant可以实现呀。
|
|
返回顶楼 | |
发表时间:2004-06-01
smallduzi 写道 不用CruiseContorl,ant可以实现呀。
你可能误解我的意思了 当然构建的任务是由ant完成 但通过CruiseControl可以定时build(如你上面说的计划任务) 还提供web接口察看build的结果 |
|
返回顶楼 | |
发表时间:2004-06-01
我用anthill。定时从VSS上抓取最新版本,然后使用ant脚本构建。另外还有email通知功能,一个web的管理界面。
|
|
返回顶楼 | |
发表时间:2004-06-01
恩。我做的也是定时构建编译,不过添加了对jsp文件的编译功能,自己用cbc写了一个任务定时执行的程序,邮件通知是我写的ant扩展任务,将来打算添加从cvs中自动统计的功能,具体的效果现在还没有看出来。
|
|
返回顶楼 | |