Marcian 行成于思而毁于随 » Blog Archive » CruiseControl+ANT+SVN实现持续集成。

CruiseControl+ANT+SVN实现持续集成。

2008年12月12日 下午 45:35 | 作者:marcian

CruiseControl是一个开源的持续集成框架,最初由ThoughtWorks开发。基于CruiseControl/ANT/SVN可以轻松的实现持续集成,并可以通过GUI轻松进行管理。

 1:下载CruiseControl,我的版本服务器为Win,所以下载的2.8的exe版。然后安装。

 2:将需要进行持续集成的项目check out 一个copy出来。

 3:修改CruiseControl安装目录下的config,dashboard-config.xml文件。以及CruiseControl安装目录下的webappscruisecontrolWEB-INFweb.xml文件。下面是三个文件的sample,需要修改的地方用粗体标出。

config.xml

<cruisecontrol>
  <property value=”x:dailybuildprojects” />
  <property value=”x:Program FilesApache Software Foundationapache-ant-1.7.1″ />
  <property value=”x:dailybuildlogs”/>
  <project >    <listeners>
      <currentbuildstatuslistener file=”logs/${project.name}/status.txt” />
    </listeners>
    <bootstrappers>
      <!–cvsbootstrappers?vssbootstrappers?svnbootstrapper –>
      <svnbootstrapper localWorkingCopy=”${project_home}/${project.name}” />
    </bootstrappers>
    <modificationset quietperiod=”600″>
      <svn localWorkingCopy=”${project_home}/${project.name}” />
    </modificationset>
    <schedule interval=”60″>
      <ant anthome=”${ant_home}” buildfile=”${project_home}/${project.name}/etc/build.xml” />
    </schedule>
    <log dir=”${log_home}/${project.name}”/>
    <publishers>
      <htmlemail charset=”UTF-8″ mailhost=”localhost” defaultsuffix=”@xxx.com” username=
xxx@xx.com password=”abc1234″ returnname=”CruiseControl” returnaddress=xxx@xx.com subjectprefix=”Daily Build” xsldir=”webapps/cruisecontrol/xsl” css=”webapps/cruisecontrol/css/cruisecontrol.css” logdir=”${log_home}/${project.name}”>
         <always address=
xxx@xx.com />
        <failure address=
xxx@xx.com />
      </htmlemail>
    </publishers>
  </project>
 </cruisecontrol>

dashboard-config.xml

<dashboard>
  <buildloop
     logsdir=”D:dailybuildlogs”
           artifactsdir=”D:dailybuildartifacts” />
 <features allowforcebuild=”true”/>
 <trackingtool projectname=”” baseurl=”” keywords=””/>
  <subtabs>
     <subtab />
 </subtabs>
</dashboard>

 web.xml

…….

 <context-param>
      <!– You can set this value via the user.log.dir property in Ant, when building the WAR file. –>
      <param-name>logDir</param-name>
      <param-value>D:dailybuildlogs</param-value>
      <description> This should be the full path to your CruiseControl log directory. If you
          are in single project mode, this will contain only the logs for your project. If you
          are in multi-project mode, it is expected that you will have multiple sub-directories
          inside this log directory, one for each project.
      </description>
    </context-param>

………..

<servlet>
        <servlet-name>ArtifactServlet</servlet-name>
        <servlet-class>net.sourceforge.cruisecontrol.servlet.FileServlet</servlet-class>
        <init-param>
            <param-name>rootDir</param-name>
            <param-value>D:dailybuildartifacts</param-value>
        </init-param>
    </servlet>

…………

4:CruiseControl自带有Jetty的服务器,默认为8080端口,通过修改cruisecontrol.bat的webPort参数可以修改这个端口。

5:确保安装有ANT和SVN,并且二者进行了集成,ANT和SVN集成比较简单,下载SVNANT,然后将lib下的包全部拷贝到ANT的lib下。在build.xml中引用SVN的示例如下:

……

<taskdef classname=”org.tigris.subversion.svnant.SvnTask” />

<target depends=”prepare”>
  <svn javasvn=”true” username=”myname” password=”mypassword” >
    <checkout url=”${remote.url}” destPath=”${local.location}” />
    </svn>
</target>

…….

6:运行cruisecontril.bat,然后通过http://localhost:pord/dashboard 和 http://localhost:port/cruisecontrol 进行图形化管理。

7:更多详细的设置可以访问cruisecontrol的官方网站。

引文来源  Marcian 行成于思而毁于随 ? Blog Archive ? CruiseControl+ANT+SVN实现持续集成。