本文主要是介绍使用CruiseControl创建你的Build Grid - CruiseControl Step by Step (5),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果您一直跟着这个Thread,那么现在你应该已经可以使用CruiseControl来进行持续集成了。如果你有很多项目需要持续集成的话,可能在同一时刻会有很多项目排队等待构建的现象,以至于使各项目团队无法得到及时的反馈,此时一个集成服务器就不够了。下面我们就来扩展我们的Build Grid吧。
一、前提条件与假设
根据前面的介绍,你的第一台持续集成服务器已经可以正常运行了。这里列出如下假设,以方便后续描述。
(1) 首台持续集成服务器IP地址为:192.168.1.6,hostname为CI_One。
(2) 在首台持续集成服务器上:
CruiseControl的根目录是:C:/CruiseControl,今后用${CC.HOME}表示。
CruiseControl的Projects目录是:C:/CruiseControl/Proects,今后用${CC.Projects}表示。
CruiseControl的Logs目录是:C:/CruiseControl/Logs,今后用${CC.Logs}表示。
CruiseControl的Artifacts目录是:C:/CruiseControl/Artifacts,今后用${CC.Artifacts}表示。
(3) 你将在IP地址为:192.168.1.8,hostname为CI_Two的机器上部署第二个持续集成服务器。
(4) 把名为CI_One的机器做为主服务器,即把CI_Two上构建的日志(Logs)和结果(Artifacts)放发布到CI_One的${CC.Logs}和${CC.Artifacts}中。
(5) 你将在CI_Two上构建名为CI_TWO_connectFour的项目,它也使用SVN作为项目的SCM。
二、准备工作
(1) 将CI_One上的${CC.Logs}和${CC.Artifacts}设为共享目录,保证CI_Two对这两个目录可写。
(2)可以在CI_Two上,把CI_One的${CC.Logs}和${CC.Artifacts}两个目录分别映射成两个网络驱动器,名字为别为Z:/和Y:/。
(3) 将CI_One上的CruiseControl,整个拷贝到CI_Two上的C盘根目录下,即对于CI_Two来说,CruiseControl的工作目录是C:/CruiseControl。(当然,也可以把一个你编译后生成的CruiseControl拷贝过来。)
(4) 在CI_Two的${CC.Projects}目录下,建立名为CI_TWO_connectFour的目录,把SVN中的源代码checkout到这个目录下,并确保build.xml文件在这个目录下。
三、第二台持续集成服务器的配置工作
以下所有工作全部发生在名为CI_Two这台机器上。
(4) 修改配置文件config.xml,如下所示:
< project name ="CI_TWO_connectFour" >
< listeners >
< currentbuildstatuslistener file ="Z:/${project.name}/status.txt" />
<!-- 请注意这里的z: -->
</ listeners >
< bootstrappers >
< svnbootstrapper localWorkingCopy ="projects/${project.name}" />
</ bootstrappers >
< modificationset quietperiod ="30" >
< svn localWorkingCopy ="projects/${project.name}" />
</ modificationset >
< schedule interval ="300" >
< ant anthome ="apache-ant-1.7.0" buildfile ="projects/${project.name}/build.xml" />
</ schedule >
< log dir="Z:/" >
<!-- 请注意这里的z: -->
< merge dir ="projects/${project.name}/target/test-results" />
</ log >
< publishers >
< onsuccess >
< artifactspublisher dest ="Y:/${project.name}" file ="projects/${project.name}/target/connectfour.jar" />
<!-- 请注意这里的Y: -->
</ onsuccess >
</ publishers >
</ project >
</ cruisecontrol >
(5) 修改启动脚本
打开CruiseControl.bat文件,找到下面这行代码:
将下面这段代码:
保存该文件。
四、运行Build Grid
(1) 运行${CC.Home}中的CruiseControl.bat,启动CI_One上的CruiseControl。
(2) 运行${CC.Home}中的CruiseControl.bat,启动CI_Two上的CruiseControl。
五、访问你的Build Grid
(1) 在任何一台可以访问CI_One的机器上,通过浏览器访问下面的网址http://192.168.1.6:8080/dashboard 来查看你构建的项目。当然,使用hostname也可以。因为CruiseControl内置了一个Jetty应用服务器,版本是6.1。
(2) 你同样可以使用http://CI_One:8080/ 访问CI_One的Old Reporting 页面,用http://CI_Two:8080/访问CI_Two的Old Reporting。不过你会发现,你在CI_Two上配置的项目状态在CI_One的Old Reporting页面都显示为?????。这就是Old Reporting 的局限性。
小贴士:
(1) 要保证所有项目(无论在哪台机器上构建)的项目名都不相同,否则,CruiseControl的DashBoard只会选取其中的一个同名项目,忽略其它的同名项目。
(2) 在CI_Two中启动脚本中,一定要正确填写DashBoardURL参数,确保是CI_One的地址和端口。
(3) 如果项目的log文件比较大,或者构建时使用内存较多,在启动脚本中,可以通过增加JAVA命令行参数,扩大JVM的内存,以免出现OutOfMemory错误。
到此为止,CruiseControl的入门篇就结束了。以后,作为CruiseControl的进阶篇,我还将继续介绍CruiseControl的一些详细配置。
这篇关于使用CruiseControl创建你的Build Grid - CruiseControl Step by Step (5)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!