我已将CruiseControl.NET配置为监控10个以上的.NET项目。所有这些项目(Web应用程序,Windows服务,wcf服务等)都使用共享类库项目,因此在ccnet.config中我必须将每个项目的svn路径设置为svn repo的根目录。如果我没有这样做,那么对共享程序集的更改不会触发依赖它重建的项目。
问题在于,因为我已经将每个项目的svn路径设置为repo的根目录,这意味着任何更改都会触发每个项目的重建,这需要很长时间。如何在多个项目中使用共享程序集时如何解决此问题,而不是每次都进行一些更改时都会重建每个项目?
以下是另一种查看问题的方法:
CC Project#1 = svn:// repo / WebApps / WebsiteA(引用svn:// repo / Shared / ClassLibraryA) CC项目#2 = svn:// repo / WebApps / WebsiteB(引用svn:// repo / Shared / ClassLibraryB)
对于CC Project#1,您无法将svn路径设置为svn:// repo / WebApps / WebSiteA,就像您更改了ClassLibraryA那样它不会触发构建。但是,如果您将路径设置为svn:// repo,那么它将获取对ClassLibraryA的更改,但它也会触发CC Project#2。
我们将非常感谢任何建议......
答案 0 :(得分:1)
答案是在CruiseControl.NET中使用sourcecontrol multi块,它允许您为每个项目指定多个svn路径:
http://ccnet.sourceforge.net/CCNET/Multi%20Source%20Control%20Block.html
答案 1 :(得分:1)
您可能希望使用“项目触发器”来启动构建: http://confluence.public.thoughtworks.org/display/CCNET/Project+Trigger
如果您的ClassLibraryA在CruiseControl上有一个项目(其svnpath是svn:// repo / Shared / ClassLibraryA),那么您的WebsiteA将如下所示:
<project name="WebSiteA">
<triggers>
<projectTrigger project="ClassLibraryA">
<triggerStatus>Success</triggerStatus>
<innerTrigger name="ClassLibraryA" type="intervalTrigger" seconds="60" buildCondition="ForceBuild" />
</projectTrigger>
<intervalTrigger seconds="300"/>
</triggers>
<cb:svn-block svnpath="repo/WebApps/WebsiteA" />
<tasks>
<...>
</tasks>
<publishers>
<...>
</publishers>
</project>