论坛首页 综合技术论坛

在ant中使用cvs功能自动完成每日构建。

浏览 38030 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-05-17  
实现的主要功能是:自动从cvs中check out模块,然后编译,把编译后的class打成jar,再commit到cvs服务器的指定位置。
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中制定一个计划任务,就可以了。
   发表时间:2004-05-17  
不错,好玩:D
0 请登录后投票
   发表时间:2004-05-20  
这也应该是每个公司,晚上做的事。曹晓刚演讲时也说过这个问题。这样每天的问题,在第2天的早上就反映出来了。
0 请登录后投票
   发表时间:2004-05-28  
alanZu 写道
不错,好玩:D

呵呵,好玩的多了。
比如自动进行UT测试。
自动进行Code的格式化。
自动进行Code的规范检测。
自动打包备份。
自动上传到WEB服务器。
自动发送到开发人员的信箱。
。。。。。。。。。。。。。
平均一天要用个10几次。
0 请登录后投票
   发表时间:2004-05-29  
ibeyond 写道
alanZu 写道
不错,好玩:D

呵呵,好玩的多了。
比如自动进行UT测试。
自动进行Code的格式化。
自动进行Code的规范检测。
自动打包备份。
自动上传到WEB服务器。
自动发送到开发人员的信箱。
。。。。。。。。。。。。。
平均一天要用个10几次。

其实,我对每日构建的概念,还是比较模糊。也只是略知一二。只是对这方面比较感兴趣。
我到不觉得挺好玩。我们公司做了每日构建后,每天早上check out最新的版本。如果有问题,编译的错误日志也会放到服务器上,挺舒服的。
但是,这只是万里长征的第一步。如果曹晓刚或者有这方面的同仁能看到这个贴子的话,也希望他能说说,你们是怎么做的。
0 请登录后投票
   发表时间:2004-05-30  
CruiseContorl
http://cruisecontrol.sourceforge.net/

可以定时根据ant脚本构建
提供E-mail通知
还有一个web界面
0 请登录后投票
   发表时间:2004-05-31  
不用CruiseContorl,ant可以实现呀。
0 请登录后投票
   发表时间:2004-06-01  
smallduzi 写道
不用CruiseContorl,ant可以实现呀。

你可能误解我的意思了
当然构建的任务是由ant完成
但通过CruiseControl可以定时build(如你上面说的计划任务)
还提供web接口察看build的结果
0 请登录后投票
   发表时间:2004-06-01  
我用anthill。定时从VSS上抓取最新版本,然后使用ant脚本构建。另外还有email通知功能,一个web的管理界面。
0 请登录后投票
   发表时间:2004-06-01  
恩。我做的也是定时构建编译,不过添加了对jsp文件的编译功能,自己用cbc写了一个任务定时执行的程序,邮件通知是我写的ant扩展任务,将来打算添加从cvs中自动统计的功能,具体的效果现在还没有看出来。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics