CruiseControl+ANT+SVN实现持续集成。
CruiseControl是一个开源的持续集成框架,最初由ThoughtWorks开发。基于CruiseControl/ANT/SVN可以轻松的实现持续集成,并可以通过GUI轻松进行管理。
1:下载CruiseControl,我的版本服务器为Win,所以下载的2.8的exe版。然后安装。
2:将需要进行持续集成的项目check out 一个copy出来。
3:修改CruiseControl安装目录下的config,dashboard-config.xml文件。以及CruiseControl安装目录下的webapps\cruisecontrol\WEB-INF\web.xml文件。下面是三个文件的sample,需要修改的地方用粗体标出。
config.xml
<cruisecontrol>
<property name=”project_home” value=”x:\dailybuild\projects” />
<property name=”ant_home” value=”x:\Program Files\Apache Software Foundation\apache-ant-1.7.1″ />
<property name=”log_home” value=”x:\dailybuild\logs”/>
<project name=”myproject”>
<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:\dailybuild\logs”
artifactsdir=”D:\dailybuild\artifacts” />
<features allowforcebuild=”true”/>
<trackingtool projectname=”" baseurl=”" keywords=”"/>
<subtabs>
<subtab class=”net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget” />
</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:\dailybuild\logs</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:\dailybuild\artifacts</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 name=”svn” classname=”org.tigris.subversion.svnant.SvnTask” />
<target name=”checkout” 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的官方网站。