多个项目使用共享项目时CruiseControl.NET问题

时间:2010-08-12 17:09:57

标签: cruisecontrol.net

我已将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。

我们将非常感谢任何建议......

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>