`
kidiaoer
  • 浏览: 805404 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

cruisecontrol、ant、svn持续集成

阅读更多
自己两个多星期以来对持续集成的概念和应用有了一些了解。下面主要对自己配置持续集成的环境进行总结。(看上去简单,但是对我开始对持续集成都没什么了解的人来说确实费了不少周折)
一  本次持续集成环境的搭建所使用的工具有
cruisecontrol、ant、svn、junit、Slik-Subversion-1.5.6-win32、svnant-1.1.0-RC2.zip
cruisecontrol:是一种持续集成过程的框架,包括了邮件通知,ant 和各种源码控  制工具的插 件。并提供了web接口,用于查看当前和以前的创建的结果.
ant:构建工具。
svn:版本控制工具。
junit:单元测试工具。
slik-subversion:是为了调用svn的客户端命令安装的。
svnant:主要是用到它里面的lib中的jar包,它具体使用还不是很清楚
另外本次的辅助环境还有jdk,相信大家都再也熟悉不过了。
二 环境的搭建步骤:
jdk的安装:根据jdk安装包的提示安装jdk。设置系统的环境变量:
a) JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat都需要依赖此变量);
b) Path使得系统可以在任何路径下识别java命令,设为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
c)CLASSPATH为java加载类(class or lib)路径,只有类在  classpath中,java命令才能识别,设为:.;JAVA_HOME\lib\dt.jar;JAVA_HOME%   \lib\tools.jar (要加.表示当前路径);%JAVA_HOME%就是引用前面指定的JAVA_HOME;不过本人还是比较相信绝对路径的。
2 ant的安装:ant是集成构建工具,想必大家都不太陌生了。只需要到ant.apache.org的网站下载ant的适当版本解压缩后,配置系统的环境变量:ANT_HOME:d:\apache-ant-1.7.0, path:d:\apache-ant-1.7.0\bin 后,ant就可以在任意目录下运行了,如cmd下运行ant,显示:buildfile:build.xml does not exsit。。。。。
3 安装svn,因为cruisecontrol要用到svn(不知道这两个有什么先后顺序没,因为cc要用svn就先装cc喽)。svn的安装TortoiseSVN-1.5.3.13783-win32-svn-1.5.2.msi安装提示装就可以了。
4 安装tomcat ,设置系统环境变量CATALINA_HOME=c:\tomcat,CLASSPATH=C:\tomcat\common\lib(加载必要的包)。
5 cuisecontrol的安装,因为本文使用的操作系统为XP,就使用CruiseControl-2.8.2.exe安装就可以了(.exe文件还是很受大家喜欢的)。配置系统的环境变量:CC_HOME=d:\cruisecontrol
6 安装slik-subversion,它会自动写入到path=D:\SlikSvn\bin\ 如果没有写入的话,要麻烦手动加入到系统的环境变量path中,本人曾经遇到过,cmd窗口已经打开但是配置文件执行过程中svn的命令总不能识别发现此处的路径没有加入到path中。
7下载svnant-1.1.0-RC2.zip,把lib包中的jar考到ant的jar中。
三 以上的准备工作已经基本搞定,下面就介绍一下配置文件。此次环境的搭建配置文件是很关键的,因为他们各自有自己的标签,所以还要想达到什么功能慢慢查找,(如果有时间系统学习一下就好了)。
1 ant的关键文件为build.xml(当然也可以起别的名称,自己还要改它的启动文件,就用这个名称吧)下面是一个实例:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
定义basedir当前的根目录,default默认执行的标签,name工程名
<project basedir="." default="all" name="framework">
<property environment="env" />
定义tomcat的安装目录
<property name="TOMCAT_DIR" location="D:/Tomcat 5.5" />
定义debug的级别
<property name="debuglevel" alue="source,lines,vars" />
为了引用tomcat固有包方便所以增加次属性
<property name="coolink.dist.path" location="D:/Tomcat 5.5/webapps/txsd/WEB-INF" />
指定要编译的工程目录
<property name="CLASS_DIR" location="D:/CruiseControl/projects/framework" />
<property name="target" value="1.5" />
<property name="source" value="1.5" />
编译时候所使用的类路径,id为引用的名称
<path id="Apache Tomcat v5.5 [Apache Tomcat v5.5].libraryclasspath">
  <pathelement location="${TOMCAT_DIR}/common/lib/commons-el.jar" />
  ....
  <pathelement location="${TOMCAT_DIR}/common/lib/servlet-api.jar" />
</path>
<path id="Web App Libraries.libraryclasspath">
  <pathelement location="${coolink.dist.path}/lib/activation.jar" />
  .............
  <pathelement location="${coolink.dist.path}/lib/xmlParserAPIs.jar" />
</path>
  <path id="ant.svn.classpath">
  <fileset dir="D:/CruiseControl/apache-ant-1.7.0/lib">
   <include name="*.jar" />
  </fileset>
</path>
<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask">
  <classpath refid="ant.svn.classpath" />
</taskdef>
<path id="txsd.classpath">
  <path refid="Apache Tomcat v5.5 [Apache Tomcat v5.5].libraryclasspath" />
  <path refid="Web App Libraries.libraryclasspath" />
</path>
clean操作,如果build之前不执行此操作,build检查到原有的class文件就不再编译。
<target name="clean">
     <delete file="${CLASS_DIR}/longcon-framework.jar" />
     <delete dir="target" quiet="true" />
  <delete dir="${CLASS_DIR}/source/classes" />
</target>
要build模块的名称build-framework看来可以随便起名字,但是有人说必须和模块名称一致,至今还不知道为什么
<target name="build-framework">
  <echo message="${ant.project.name}: ${ant.file}" />
  <mkdir dir="${CLASS_DIR}/source/classes" />
  <copy includeemptydirs="false" todir="source/classes">
   <fileset dir="${CLASS_DIR}/source" excludes="**/*.launch, **/*.java" />
  </copy>
  <javac debug="true" debuglevel="${debuglevel}" destdir="${CLASS_DIR}/source/classes" source="${source}" target="${target}" encoding="UTF-8">
   <src path="${CLASS_DIR}/source" />
   <exclude name="**/.svn/**" />
   <classpath refid="txsd.classpath" />
  </javac>
</target>
单元测试的部分
<target name="test">
  <mkdir dir="target/test-classes" />
  <javac encoding="UTF-8" srcdir="${CLASS_DIR}/test" destdir="target/test-classes">
   <classpath>
    <pathelement location="${CLASS_DIR}/source/classes" />
    <path refid="Apache Tomcat v5.5 [Apache Tomcat v5.5].libraryclasspath" />
          <path refid="Web App Libraries.libraryclasspath" />
   </classpath>
  </javac>
  <mkdir dir="target/test-results" />
  <junit haltonfailure="no" printsummary="on">
   <classpath>
    <pathelement location="${CLASS_DIR}/source/classes" />
    <pathelement location="${coolink.dist.path}/lib/junit.jar" />
    <pathelement location="target/test-classes" />
   </classpath>
   <formatter type="brief" usefile="false" />
   <formatter type="xml" />
   <batchtest todir="target/test-results">
    <fileset dir="target/test-classes" includes="**/*.class" />
   </batchtest>
  </junit>
</target>
打包放到指定目录
<target name="jar">
  <jar destfile="${CLASS_DIR}/longcon-framework.jar" encoding="UTF-8" update="false" excludes="**/*Test*.class">
   <fileset dir="${CLASS_DIR}/source/classes" />
  </jar>
  <copy includeemptydirs="false" todir="${coolink.dist.path}/lib">
   <fileset file="${CLASS_DIR}/longcon-framework.jar" excludes="**/*.launch, **/*.java" />
  </copy>
</target>
调用svn命令,这与三中的步骤7有密切的联系
<target name="commit">
<svn username="aaa" password="aaa">
         <commit file="${coolink.dist.path}/lib/longcon-framework.jar" message="${msg.commit}"  />
     </svn>
</target>
<target name="all"  depends="clean,build-framework,jar,commit"/>
</project>
注释:
a设置编译所需要的类路径可以用:                      <classpath>
      <pathelement path="${classpath}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="build">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>
      </dirset>
      <filelist refid="third-party_jars"/>
   </classpath>
b <target name="test" depends="clean">depends表示依赖关系
2 cruisecontrol的config文件,CC启动的时候会自动寻找此文件,当然你可以通过修改启动文件修改config.xml名称,只要两处一致就能找到,下面是一个config文件的实例:
<cruisecontrol>//cc的固有标签,cc中可以有多个project
<project name="framework">// 工程名称
<plugin name="labelincrementer" classname="net.sourceforge.cruisecontrol.labelincrementers.SVNLabelIncrementer"/>
       <labelincrementer workingcopypath="projects/${project.name}"/> // 显示svn的版本号
listeners:监听器,来报告cc的此项目的运行信息
  <listeners>
   <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
  </listeners>
bootstrappers从svn源码控制程序更新本地版本,据说还有向其它插件提供当前创建的状态
  <bootstrappers>
   <svnbootstrapper localWorkingCopy="projects/${project.name}" username="luojing" password="luojing" />
  </bootstrappers>
  <bootstrappers>//向ant提供当前信息
   <antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="jar" />
  </bootstrappers>
  <modificationset quietperiod="30">// 通过svn更新原代码
   <!-- touch any file in connectfour project to trigger a build -->
   <svn localWorkingCopy="projects/${project.name}" username="luojing" password="luojing" />
  </modificationset>cruisecontrol、ant、svn持续集成
分享到:
评论

相关推荐

    cruisecontrol_ant_svn持续集成

    cruisecontrol.war 文件,你可以直接将这个文件 COPY 到你的%TOMCAT_HOME%\webapps 目录下,不 过这种方式通常都会出错,前 面我们讲过CC的WEB组件要访问我们的项目build 的状态文件,而下载的 CC2.2 里面自带的 ...

    持续集成及CruiseControl技术交流

    主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...

    CruiseControl+SVN+Maven+Tomcat持续集成环境搭建

    详细的讲述了基于CruiseControl+SVN+Maven+Tomcat持续集成环境的搭建,以及在搭建过程中遇到的问题。

    利用CruiseControl软件进行持续集成

    1.认识CruiseControl 2.CruiseControl的安装 3. CruiseControl的配置 4.总结

    SVN+cruisecontrol 搭建持续集成开发环境

    SVN+cruisecontrol 搭建持续集成开发环境

    使用SVN+CruiseControl+ANT实现持续集成

    经历这样痛苦的一段时间,终于忍受不了,通过命令行实现了包括获取、编译、发布过程的集成,大大减轻版本编译的时间,此时还能见到团队成员一边编译程序一边聊天轻松的笑脸,这就坚定了自己持续集成的做法,不过可笑...

    cruisecontrol构建持续集成和持续构建环境

    持续集成配置 持续集成环境:Maven2 + Subversion + CruiseControl CC原理 以及一些样例

    CruiseControl构建持续集成服务器

    使用CruiseControl构建持续集成服务器.pdf

    CruiseControl持续集成

    CruiseControl是CI服务器的老者,诞生已是多年,在许多方面,CruiseControl服务器已经成为持续集成实践的同义词。而现在,CruiseControl已发展成为一个家族式系统,包括CruiseControl.java、CruiseControl.net、...

    CruiseControl + ANT +SVN

    可以完成代码的自动编译,打包。这些是我在网上搜集到的资料,我用了其中一种方法。其他的不知道行不行。有待考察。希望对你有所帮助

    CruiseControl-持续集成环境安装

    1、CruiseControl 的安装配置 2、CC + SVN + Msbuild 设置,配置文件详细描述 3、CCTray 的安装使用 4、SVN安装配置完全攻略教程 5、服务器相关信息 6、软件包:CruiseControl.NET-1.4.4-Setup.exe 7、软件包:...

    CruiseControl及ant配置

    有关CruiseControl及ant配置的资料,少量内容来自朋友

    CruiseControl.NET

    CruiseControl.NET 是 .NET...CruiseControl是一个针对持续构建程序(项目持续集成)的框架,它包括一个email通知的插件,Ant和各种各样的CVS工具。CruiseControl提供了一个Web接口, 可随时查看当前的编译状况和历史状况。

    持续集成实践之CruiseControl

    持续集成实践之CruiseControl

Global site tag (gtag.js) - Google Analytics