2011-10-04 97 views
0

我正在使用ccnet 1.6设置每晚构建,以按顺序和排他性地运行项目,但是,如果触发构建时项目未按预期顺序启动,则会设置队列队列优先级。下面的配置会先随机启动队列1,2,3或4,然后按照定义的顺序完成剩余的项目(即2,1,3,4或3,1,2,4等)。我试过xlmns 1.6和1.5,结果相同。我看不出为什么这不起作用,我错过了什么? 感谢CCnet队列优先级不排序

<cb:define name="Common"> 
    <webURL>http://hostname/ccnet/server/local/project\$(CCProjectName)\ViewLatestBuildReport.aspx</webURL> 
    <workingDirectory>D:\source\$(ProjectName)</workingDirectory> 
    <sourcecontrol type="svn"/> 
    <modificationDelaySeconds>60</modificationDelaySeconds> 
    <triggers> 
    <scheduleTrigger time="11:05" buildCondition="ForceBuild "/> 
    </triggers> 
    <state type="state" directory="C:\Program Files\CruiseControl.NET\server" /> 
</cb:define> 

<cb:define name="BuildProject"> 
    <project name="$(CCProjectName)" queue="SequentialQueue" queuePriority="$(QueuePriority)"> 
    <cb:Common /> 
    <tasks> 
     <exec> 
     <executable>$(ANT_HOME)\bin\ant.bat</executable> 
     <buildArgs>-logger org.apache.tools.ant.XmlLogger -logfile build_log.xml -f build\$(ProjectName).xml</buildArgs> 
     </exec> 
    </tasks> 
    <publishers> 
     <merge> 
     <files> 
      <file>D:\source\$(ProjectName)\build\*.xml</file> 
     </files> 
     </merge> 
     <xmllogger /> 
    </publishers> 
    </project> 
</cb:define>  

<cb:BuildProject CCProjectName="API" ProjectName="api" QueuePriority="1" /> 

<cb:BuildProject CCProjectName="Ack" ProjectName="acknowledgement" QueuePriority="2" /> 

<cb:BuildProject CCProjectName="Error" ProjectName="error" QueuePriority="3" /> 

<cb:BuildProject CCProjectName="Monitoring" ProjectName="monitoring" QueuePriority="4" /> 

回答

0

我猜这是CruiseControl.Net的错误,您的方案(由同一时间表触发器触发一个队列变量优先项目)不是常见的一种。你应该在cruisecontrolnet.org上提交一个错误。

这种设置的更常见的解决方案是让项目使用<projectTrigger/>相互触发,这也导致了顺序构建。您可能需要更改triggerStatus参数,以便构建失败不会停止链。

+0

谢谢我会这样做。 – user978142

+0

那么是否有更好/不同的方式来按照定义的顺序触发顺序项目?我不敢相信这不是一个普通的设置。 – user978142

+0

这很常见,通常使用项目触发器完成。 – skolima