我想知道是否可以创建两个触发器,一个在文件系统上,另一个在同一个配置文件中用于svn checkout。 我尝试了以下内容:
a)已将触发器及其各自的文件系统,svn定义以及任务放在同一个文件中, 导致错误:它表示未使用的节点被检测到 例如:
<trigggers>
<intervalTrigger seconds="100" buildCondition="ForceBuild"/>
<intervalTrigger seconds="300" buildCondition="IfModificationExists"/>
</triggers>
<sourcecontrol type="filesystem">
<repositoryRoot>...</repositoryRoot>
</sourcecontrol>
<sourcecontrol type="svn">
<trunkUrl>....</trunkUrl>
<workingDirectory>...</workingDirectory>
<executable>...\SVN.exe</executable>
<username/>..<password/>
</sourcecontrol>
<tasks>
<!-- To be carried out if either of the two triggers happen -->
</tasks>
b)为每个与各个文件系统/ svn和任务绑定的触发器创建了不同的范围,最终还是未使用的节点检测到错误。
<cb:define first_trigger_and source _and_tasks>
<triggers>
<intervalTrigger seconds="300" buildCondition="ForceBuild"/>
</triggers>
<sourcecontrol type="filesystem">
<repositoryRoot>...</repositoryRoot>
</sourcecontrol>
<tasks>
<!--To be carried out when first trigger happens -->
</tasks>
</cb:define>
<!-- And then I call the trigger this way -->
<cb:first_trigger_and source _and_tasks>
这些解决方案都不起作用。
答案 0 :(得分:3)
可以在<triggers>
块中指定多个触发器,但这不是CruiseControl.Net在处理您的配置时抱怨的原因。
在我看来,您需要单个触发器,但两个单独的源控件条目。 <triggers>
条目指定CruiseControl.Net何时应该唤醒并检查项目状态。您无法在<sourcecontrol>
块中指定多个<project>
元素。要在(远程)svn更改和本地文件系统更改上实际重建项目,您应该使用<sourcecontrol type="multi">
标准触发器:
<triggers>
<intervalTrigger seconds="30" />
</triggers>
<sourcecontrol type="multi">
<sourceControls>
<filesystem>
<repositoryRoot>...</repositoryRoot>
</filesystem>
<svn>
<trunkUrl>....</trunkUrl>
<workingDirectory>...</workingDirectory>
<executable>...\SVN.exe</executable>
<username/>..<password/>
</svn>
</sourceControls>
</sourcecontrol>
<tasks>
<!-- To be executed if either of the two source control providers report changes -->
</tasks>