[CruiseControl]配置文件config.xml

 

一 配置文件config.xml

< cruisecontrol >
   
< property />
   
< dashboard />
   
< include.projects />
   
< system >
      
< configuration >
         
< threads />
      
</ configuration >
   
</ system >
   
< plugin />
   
< project >
      
< property />
      
< plugin />
      
< cvslabelincrementer >
      
< emptylabelincrementer >
      
< formattedlabelincrementer >
      
< labelincrementer />
      
< p4changelistlabelincrementer >
      
< propertyfilelabelincrementer >
      
< svnlabelincrementer >
      
< listeners >
         
< cmsynergysessionmonitor />
         
< currentbuildstatusftplistener />
         
< currentbuildstatuslistener />
         
< currentbuildstatuspagelistener />
         
< lockfilelistener />
      
</ listeners >
      
< bootstrappers >
         
< accurevbootstrapper />
         
< alienbrainbootstrapper />
         
< antbootstrapper />
         
< clearcasebootstrapper />
         
< clearcaseviewstrapper />
         
< cmsynergybootstrapper />
         
< cmsynergybaselinebootstrapper />
         
< cvsbootstrapper />
         
< darcsbootstrapper />
         
< execbootstrapper />
         
< gitbootstrapper />
         
< harvestbootstrapper />
         
< lockfilebootstrapper />
         
< mercurialbootstrapper />
         
< p4bootstrapper />
         
< plasticscmbootstrapper />
         
< snapshotcmbootstrapper />
         
< starteambootstrapper />
         
< surroundbootstrapper />
         
< svnbootstrapper />
         
< tfsbootstrapper />
         
< vssbootstrapper />
      
</ bootstrappers >
      
< modificationset >
         
< accurev >
         
< alienbrain />
         
< alwaysbuild />
         
< buildstatus />
         
< clearcase />
         
< cmsynergy />
         
< compound >
            
< targets />
            
< triggers />
         
</ compound >
         
< cvs />
         
< darcs />
         
< filesystem />
         
< forceonly />
         
< git />
         
< harvest />
         
< httpfile />
         
< mavensnapshotdependency />
         
< maven2snapshotdependency />
         
< mercurial />
         
< mks />
         
< p4 />
         
< plasticscm />
         
< pvcs />
         
< snapshotcm />
         
< starteam />
         
< store />
         
< surround />
         
< svn />
         
< tfs />
         
< timebuild >
         
< ucm >
         
< veto />
         
< vss />
         
< vssjournal />
      
</ modificationset >
      
< schedule >
         
< ant />
         
< maven />
         
< maven2 />
         
< pause />
         
< nant />
         
< phing />
         
< rake />
         
< exec />
         
< composite />
         
< xcode />
      
</ schedule >
      
< log >
         
< merge />
     
< gzip />
     
< delete />
     
< deleteartifacts />
      
</ log >
      
< publishers >
         
< antpublisher />
         
< artifactspublisher />
         
< clearcasebaselinepublisher />
         
< cmsynergybaselinepublisher />
         
< cmsynergytaskpublisher />
         
< compoundpublisher />
         
< email />
         
< execute />
         
< ftppublisher />
         
< htmlemail />
         
< http >
         
< jabber />
         
< onfailure />
         
< onsuccess />
         
< origo />
         
< rss />
         
< sametimeannouncement />
         
< scp />
         
< sfeedocman />
         
< sfeefrs />
         
< sfeetracker />
         
< socket />
         
< twitter >
         
< weblog >
         
< x10 />
         
< xsltlogpublisher />
         
< yahoopublisher />
      
</ publishers >
   
</ project >
</ cruisecontrol >

 

 

二 config.xml的元素<CruiseControl/>和子元素

1)<CruiseControl/>

<CruiseControl/>是配置文件的根节点,可以看做其他的元素容器。

它可以包含子元素:<system>,<project>,<plugin>,<property>,<include.projects>,<dashboard>。

2) <threads> (<system>/<configuration>/<threads>)

<threads> 用来指定CruiseControl可同时build projects的最大数目。默认为1。如果某一时刻需要运行的projects大于threads的count属性指定的值,则多余count的projects将处于等待队列。

它包含属性count。count表示thread的最大数目。

3) <property>

<property> 用来在config.xml中设置一个属性。

它可以包含属性name,value,enviroment,file,toupper。name/value用来表示一个属性;enviroment用来指定可以使用的系统环境变量的前缀,例如当environment为myenv时,表示可以使用系统中的所有的以myenv开始的环境变量,例如myenv.path;file用来加载专门包含<property/>的文件,将所有的property导入到当前config.xml;toupper用来将属性的名字转化为大写。

如下示例:

1.Set a couple of global properties using name/value pairs: 
< cruisecontrol >
    
< property  name ="cruisedir"  value ="/home/cruise" />
    
< property  name ="logdir"     value ="${cruisedir}/logs" />
    ...
< cruisecontrol >

2.Set a collection of global properties from the properties file "config.properties":
< cruisecontrol >
    
< property  file ="config.properties" />
    ...
< cruisecontrol >

3.Load the system's environment into a collection of global properties. Uppercase all environment variable names: 
< cruisecontrol >
    
< property  environment ="env"  toupper ="true" />
    
< property  name ="logdir"      value ="${env.CCDIR}/logs" />
    ...
< cruisecontrol >

4.Define a global property called "buildmanager". Override it's value only within the scope of the project called "project2". 
< cruisecontrol >
    
< property  name ="buildmanager"  value ="buildmgr@here.com" />

    
< project  name ="project1" >
        
<!--  ${buildmanager} resolves to "buildmgr@here.com"  -->
    
</ project >

    
< project  name ="project2" >
        
< property  name ="buildmanager"  value ="someoneelse@here.com" />
        
<!--  ${buildmanager} resolves to "someoneelse@here.com"  -->
    
</ project >
< cruisecontrol >

5.As demonstrated here, properties and plugin pre-configuration can be an extremely powerful combination. 
< cruisecontrol >
    
<!--  Load environment variables  -->
    
< property  environment ="env"  toupper ="true" />

    
<!--  Commonly used directories  -->
    
< property  name ="reportdir"   value ="${env.CCDIR}/report" />
    
< property  name ="projectdir"  value ="${env.CCDIR}/checkout/${project.name}" />
    
< property  name ="testdir"  value ="${projectdir}/build/junit-reports" />
    
< property  name ="logdir"  value ="${env.CCDIR}/logs/${project.name}" />

    
<!--  Defaults for email  -->
    
< property  name ="buildmaster.email"   value ="buildmaster@example.com" />
    
< property  name ="buildmaster.name"   value ="Buildmaster" />

    
<!--  Preconfigure our plugins  -->
    
< plugin  name ="log"
            dir
="${logdir}" />

    
< plugin  name ="currentbuildstatuslistener"
            file
="${logdir}/buildstatus.html" />

    
< plugin  name ="cvs"
            localworkingcopy
="${projectdir}" />

    
< plugin  name ="ant"
            antscript
="${env.ANT_HOME}/bin/ant"
            antWorkingDir
="${projectdir}"
            target
="cruise" />

    
< plugin  name ="htmlemail"
            buildresultsurl
="http://servername/cruisecontrol/buildresults/${project.name}"
            mailhost
="smtp.example.com"
            returnaddress
="${buildmaster.email}"
            returnname
="${buildmaster.name}"
            subjectprefix
="[BUILD ${project.name}]"
            xsldir
="${reportdir}/jsp/webcontent/xsl"
            css
="${reportdir}/jsp/webcontent/css/cruisecontrol.css" />

    
< project  name ="project1" />
        
< listeners >
            
< currentbuildstatuslistener />
        
</ listeners >
        
< log >
            
< merge  dir ="${testdir}" >
        
</ log >
        
< modificationset >
            
< cvs />
        
</ modificationset >
        
< schedule >
            
< ant />
        
</ schedule >
        
< publishers >
            
< htmlemail >
                
< always   address ="${buildmaster.email}" >
                
< failure  address ="proj1dev@example.com" >
                
< ignore  address ="buildmaster" >
            
</ htmlemail >
        
</ publishers >
    
</ project >

    
< project  name ="project2" />
        
< listeners >
            
< currentbuildstatuslistener />
        
</ listeners >
        
< log >
            
< merge  dir ="${testdir}" >
        
</ log >
        
< modificationset >
            
< cvs />
        
</ modificationset >
        
< schedule >
            
< ant />
        
</ schedule >
        
< publishers >
            
< htmlemail >
                
< always   address ="${buildmaster.email}" >
                
< failure  address ="proj2dev@example.com" >
            
</ htmlemail >
        
</ publishers >
    
</ project >
</ cruisecontrol >

4)<include.projects>

<include.projects>用来将多个config文件合并为config文件。

它包含属性file,表示要include的config文件的相对路径。

5)<dashboard>

<dashboard>用来为build loop指定dashboard。

它包含属性url,postinterval。url为dashboard的url,postinterval表示build loop传输build信息到dashboard的间隔。

6)<project>

<project>是基本的工作单元。包含检查source修改,build,发布build结果。

它包含属性name,buildafterfailed,forcebuildnewproject,requiremodification,forceonly。buildafterfailed为ture表示即使build失败了,cruisecontrol继续保持build;forcebuildnewproject为ture表示如果没有发现project的序列文件(project.ser)就强制project开始build;requiremodification为ture表示当source code有修改时build,但是如果需要定时build或手动测试时,requiremodification需要为false。

它包含子元素<listeners>,<bootstrappers>,<modificationset>,<schedule>,<log>,<publishers>,<plugin>。

 

完!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值