一 CruiseControl安装
1) 安装JAVA SDK,设置JAVA_HOME环境变量,且将%JAVA_HOME%\bin加入path环境变量。
2) 下载CruiseControl,例如2.8.3版本为cruisecontrol-bin-2.8.3.zip,解压到C:\CruiseControl。
3) CruiseControl的binary安装中已经包含了ant builder / jetty(提供http server and jmx 对webapps下的cruisecontrol[result/report JSP page] 和 dashboard支持) ,安装后如下:
二 配置
以CruiseControl自带实例connectfour为例,配置文件如下:
1)config.xml
<cruisecontrol>
<project name="connectfour">
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="clean" />
</bootstrappers>
<!-- touch any file in connectfour project to trigger a build -->
<filesystem folder="projects/${project.name}"/>
</modificationset>
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<merge dir="projects/${project.name}/target/test-results"/>
</log>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
</onsuccess>
</publishers>
</cruisecontrol>
<project name="connectfour">
<listeners>
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
</listeners>
<bootstrappers>
<antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" target="clean" />
</bootstrappers>
<modificationset quietperiod="30">
<!-- touch any file in connectfour project to trigger a build -->
<filesystem folder="projects/${project.name}"/>
</modificationset>
<schedule interval="300">
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log>
<merge dir="projects/${project.name}/target/test-results"/>
</log>
<publishers>
<onsuccess>
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
2)dashboard-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<buildloop
logsdir=""
artifactsdir="" />
<features allowforcebuild=""/>
<trackingtool projectname="" baseurl="" keywords=""/>
<subtabs>
<subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
</subtabs>
</dashboard>
<dashboard>
<buildloop
logsdir=""
artifactsdir="" />
<features allowforcebuild=""/>
<trackingtool projectname="" baseurl="" keywords=""/>
<subtabs>
<subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
</subtabs>
</dashboard>
三 运行
1) 运行CruiseControl.bat来启动CruiseControl,
REM CruiseControl.bat
REM set CVS_RSH=
REM Uncomment the following line if you have OutOfMemoryError errors
REM set CC_OPTS=-Xms128m -Xmx256m
REM The root of the CruiseControl directory. The key requirement is that this is the parent
REM directory of CruiseControl's lib and dist directories.
REM By default assume they are using the batch file from the local directory.
REM Acknowledgments to Ant Project for this batch file incantation
REM %~dp0 is name of current script under NT
set CCDIR=%~dp0 :checkJava
if not defined JAVA_HOME goto noJavaHome
set JAVA_PATH="%JAVA_HOME%\bin\java"
set CRUISE_PATH=%JAVA_HOME%\lib\tools.jar
goto setCruise :noJavaHome
echo WARNING: You have not set the JAVA_HOME environment variable. Any tasks relying on the tools.jar file (such as "<javac>") will not work properly.
set JAVA_PATH=java :setCruise
set LIBDIR=%CCDIR%lib set LAUNCHER=%LIBDIR%\cruisecontrol-launcher.jar set JETTY_LOGS=%CCIDR%logs set EXEC=%JAVA_PATH% %CC_OPTS% -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%"
-jar "%LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099
echo %EXEC%
%EXEC%
REM
Set this if you're using SSH-based CVSREM set CVS_RSH=
REM Uncomment the following line if you have OutOfMemoryError errors
REM set CC_OPTS=-Xms128m -Xmx256m
REM The root of the CruiseControl directory. The key requirement is that this is the parent
REM directory of CruiseControl's lib and dist directories.
REM By default assume they are using the batch file from the local directory.
REM Acknowledgments to Ant Project for this batch file incantation
REM %~dp0 is name of current script under NT
set CCDIR=%~dp0 :checkJava
if not defined JAVA_HOME goto noJavaHome
set JAVA_PATH="%JAVA_HOME%\bin\java"
set CRUISE_PATH=%JAVA_HOME%\lib\tools.jar
goto setCruise :noJavaHome
echo WARNING: You have not set the JAVA_HOME environment variable. Any tasks relying on the tools.jar file (such as "<javac>") will not work properly.
set JAVA_PATH=java :setCruise
set LIBDIR=%CCDIR%lib set LAUNCHER=%LIBDIR%\cruisecontrol-launcher.jar set JETTY_LOGS=%CCIDR%logs set EXEC=%JAVA_PATH% %CC_OPTS% -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%"
-jar "%LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099
echo %EXEC%
%EXEC%
2) CruiseControl的启动log
2010-07-19 04:42:51,712 [main ] INFO Main - CruiseControl Version 2.8.3 Compiled on January 24 2010 2134
2010-07-19 04:42:51,805 [main ] INFO XMLConfigManager - reading settings from config file [C:\CruiseControl\config.xml]
2010-07-19 04:42:52,446 [main ] INFO CruiseControlController - projectName = [connectfour]
2010-07-19 04:42:52,446 [main ] INFO XMLConfigManager - using settings from config file [C:\CruiseControl\config.xml]
2010-07-19 04:42:52,477 [main ] WARN ProjectConfig - No previously serialized project found [C:\CruiseControl\connectfour.ser], forcing a build.
2010-07-19 04:42:52,477 [main ] INFO Project - Project connectfour starting
2010-07-19 04:42:52,477 [main ] INFO Project - Project connectfour: idle
2010-07-19 04:42:52,509 [Project connectfour thread] INFO Project - Project connectfour started
2010-07-19 04:42:52,540 [Project connectfour thread] INFO Project - Project connectfour: in build queue
2010-07-19 04:42:53,665 [main ] INFO CruiseControlControllerAgent - Starting HttpAdaptor with CC-Stylesheets
2010-07-19 04:42:53,743 [main ] INFO CruiseControlControllerAgent - starting httpAdaptor
2010-07-19 04:42:54,071 [main ] INFO CruiseControlControllerAgent - starting rmiRegistry
2010-07-19 04:42:56,384 [main ] INFO CruiseControlControllerAgent - starting connectorServer
2010-07-19 04:43:18,555 [BuildQueueThread] INFO BuildQueue - BuildQueue started
2010-07-19 04:43:18,555 [BuildQueueThread] INFO BuildQueue - now adding to the thread queue: connectfour
2010-07-19 04:43:18,618 [Thread-21] INFO Project - Project connectfour: bootstrapping
2010-07-19 04:43:18,665 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: bootstrapping
2010-07-19 04:43:23,102 [Thread-23] INFO ScriptRunner - Buildfile: projects\connectfour\build.xml
2010-07-19 04:43:23,321 [Thread-23] INFO ScriptRunner -
2010-07-19 04:43:23,321 [Thread-23] INFO ScriptRunner - clean:
2010-07-19 04:43:23,462 [Thread-23] INFO ScriptRunner - [delete] Deleting directory C:\CruiseControl\projects\connectfour\target
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner -
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner - BUILD SUCCESSFUL
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner - Total time: 0 seconds
2010-07-19 04:43:24,196 [Thread-21] INFO AntBootstrapper - Bootstrap successful.
2010-07-19 04:43:24,212 [Thread-21] INFO Project - Project connectfour: checking for modifications
2010-07-19 04:43:24,212 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: checking for modifications
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: No modifications found, build not necessary.
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: Building anyway, since build was explicitly forced.
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: now building
2010-07-19 04:43:24,509 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: now building
2010-07-19 04:43:25,305 [Thread-25] INFO ScriptRunner - Buildfile: projects\connectfour\build.xml
2010-07-19 04:43:25,540 [Thread-25] INFO ScriptRunner - ccAntProgress -- clean
2010-07-19 04:43:25,602 [Thread-25] INFO ScriptRunner - ccAntProgress -- compile
2010-07-19 04:43:25,665 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\classes
2010-07-19 04:43:26,446 [Thread-25] INFO ScriptRunner - [javac] Compiling 10 source files to C:\CruiseControl\projects\connectfour\target\classes
2010-07-19 04:43:34,118 [Thread-25] INFO ScriptRunner - ccAntProgress -- sleep
2010-07-19 04:43:34,149 [Thread-25] INFO ScriptRunner - [echo] Sleeping for a while so you can see the build in the new dashboard
2010-07-19 04:44:34,805 [Thread-25] INFO ScriptRunner - ccAntProgress -- test
2010-07-19 04:44:35,555 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\test-classes
2010-07-19 04:44:40,290 [Thread-25] INFO ScriptRunner - [javac] Compiling 2 source files to C:\CruiseControl\projects\connectfour\target\test-classes
2010-07-19 04:45:08,384 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\test-results
2010-07-19 04:45:10,243 [Thread-25] INFO ScriptRunner - [junit] Running net.sourceforge.cruisecontrol.sampleproject.connectfour.CellTest
2010-07-19 04:45:10,243 [Thread-25] INFO ScriptRunner - [junit] Testsuite: net.sourceforge.cruisecontrol.sampleproject.connectfour.CellTest
2010-07-19 04:45:14,196 [Thread-25] INFO ScriptRunner - [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.953 sec
2010-07-19 04:45:14,196 [Thread-25] INFO ScriptRunner - [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.953 sec
2010-07-19 04:45:14,212 [Thread-25] INFO ScriptRunner - [junit]
2010-07-19 04:45:14,805 [Thread-25] INFO ScriptRunner - [junit] Running net.sourceforge.cruisecontrol.sampleproject.connectfour.PlayingStandTest
2010-07-19 04:45:14,805 [Thread-25] INFO ScriptRunner - [junit] Testsuite: net.sourceforge.cruisecontrol.sampleproject.connectfour.PlayingStandTest
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.032 sec
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.032 sec
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit]
2010-07-19 04:45:14,852 [Thread-25] INFO ScriptRunner - ccAntProgress -- jar
2010-07-19 04:45:15,149 [Thread-25] INFO ScriptRunner - [jar] Building jar: C:\CruiseControl\projects\connectfour\target\connectfour.jar
2010-07-19 04:45:15,430 [Thread-25] INFO ScriptRunner - ccAntProgress -- all
2010-07-19 04
2010-07-19 04:42:51,805 [main ] INFO XMLConfigManager - reading settings from config file [C:\CruiseControl\config.xml]
2010-07-19 04:42:52,446 [main ] INFO CruiseControlController - projectName = [connectfour]
2010-07-19 04:42:52,446 [main ] INFO XMLConfigManager - using settings from config file [C:\CruiseControl\config.xml]
2010-07-19 04:42:52,477 [main ] WARN ProjectConfig - No previously serialized project found [C:\CruiseControl\connectfour.ser], forcing a build.
2010-07-19 04:42:52,477 [main ] INFO Project - Project connectfour starting
2010-07-19 04:42:52,477 [main ] INFO Project - Project connectfour: idle
2010-07-19 04:42:52,509 [Project connectfour thread] INFO Project - Project connectfour started
2010-07-19 04:42:52,540 [Project connectfour thread] INFO Project - Project connectfour: in build queue
2010-07-19 04:42:53,665 [main ] INFO CruiseControlControllerAgent - Starting HttpAdaptor with CC-Stylesheets
2010-07-19 04:42:53,743 [main ] INFO CruiseControlControllerAgent - starting httpAdaptor
2010-07-19 04:42:54,071 [main ] INFO CruiseControlControllerAgent - starting rmiRegistry
2010-07-19 04:42:56,384 [main ] INFO CruiseControlControllerAgent - starting connectorServer
2010-07-19 04:43:18,555 [BuildQueueThread] INFO BuildQueue - BuildQueue started
2010-07-19 04:43:18,555 [BuildQueueThread] INFO BuildQueue - now adding to the thread queue: connectfour
2010-07-19 04:43:18,618 [Thread-21] INFO Project - Project connectfour: bootstrapping
2010-07-19 04:43:18,665 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: bootstrapping
2010-07-19 04:43:23,102 [Thread-23] INFO ScriptRunner - Buildfile: projects\connectfour\build.xml
2010-07-19 04:43:23,321 [Thread-23] INFO ScriptRunner -
2010-07-19 04:43:23,321 [Thread-23] INFO ScriptRunner - clean:
2010-07-19 04:43:23,462 [Thread-23] INFO ScriptRunner - [delete] Deleting directory C:\CruiseControl\projects\connectfour\target
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner -
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner - BUILD SUCCESSFUL
2010-07-19 04:43:23,993 [Thread-23] INFO ScriptRunner - Total time: 0 seconds
2010-07-19 04:43:24,196 [Thread-21] INFO AntBootstrapper - Bootstrap successful.
2010-07-19 04:43:24,212 [Thread-21] INFO Project - Project connectfour: checking for modifications
2010-07-19 04:43:24,212 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: checking for modifications
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: No modifications found, build not necessary.
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: Building anyway, since build was explicitly forced.
2010-07-19 04:43:24,509 [Thread-21] INFO Project - Project connectfour: now building
2010-07-19 04:43:24,509 [Thread-21] INFO ProjectController - connectfour Controller: build progress event: now building
2010-07-19 04:43:25,305 [Thread-25] INFO ScriptRunner - Buildfile: projects\connectfour\build.xml
2010-07-19 04:43:25,540 [Thread-25] INFO ScriptRunner - ccAntProgress -- clean
2010-07-19 04:43:25,602 [Thread-25] INFO ScriptRunner - ccAntProgress -- compile
2010-07-19 04:43:25,665 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\classes
2010-07-19 04:43:26,446 [Thread-25] INFO ScriptRunner - [javac] Compiling 10 source files to C:\CruiseControl\projects\connectfour\target\classes
2010-07-19 04:43:34,118 [Thread-25] INFO ScriptRunner - ccAntProgress -- sleep
2010-07-19 04:43:34,149 [Thread-25] INFO ScriptRunner - [echo] Sleeping for a while so you can see the build in the new dashboard
2010-07-19 04:44:34,805 [Thread-25] INFO ScriptRunner - ccAntProgress -- test
2010-07-19 04:44:35,555 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\test-classes
2010-07-19 04:44:40,290 [Thread-25] INFO ScriptRunner - [javac] Compiling 2 source files to C:\CruiseControl\projects\connectfour\target\test-classes
2010-07-19 04:45:08,384 [Thread-25] INFO ScriptRunner - [mkdir] Created dir: C:\CruiseControl\projects\connectfour\target\test-results
2010-07-19 04:45:10,243 [Thread-25] INFO ScriptRunner - [junit] Running net.sourceforge.cruisecontrol.sampleproject.connectfour.CellTest
2010-07-19 04:45:10,243 [Thread-25] INFO ScriptRunner - [junit] Testsuite: net.sourceforge.cruisecontrol.sampleproject.connectfour.CellTest
2010-07-19 04:45:14,196 [Thread-25] INFO ScriptRunner - [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.953 sec
2010-07-19 04:45:14,196 [Thread-25] INFO ScriptRunner - [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.953 sec
2010-07-19 04:45:14,212 [Thread-25] INFO ScriptRunner - [junit]
2010-07-19 04:45:14,805 [Thread-25] INFO ScriptRunner - [junit] Running net.sourceforge.cruisecontrol.sampleproject.connectfour.PlayingStandTest
2010-07-19 04:45:14,805 [Thread-25] INFO ScriptRunner - [junit] Testsuite: net.sourceforge.cruisecontrol.sampleproject.connectfour.PlayingStandTest
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.032 sec
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.032 sec
2010-07-19 04:45:14,837 [Thread-25] INFO ScriptRunner - [junit]
2010-07-19 04:45:14,852 [Thread-25] INFO ScriptRunner - ccAntProgress -- jar
2010-07-19 04:45:15,149 [Thread-25] INFO ScriptRunner - [jar] Building jar: C:\CruiseControl\projects\connectfour\target\connectfour.jar
2010-07-19 04:45:15,430 [Thread-25] INFO ScriptRunner - ccAntProgress -- all
2010-07-19 04