CruiseControl.NET:在提交时启动构建

时间:2009-06-15 08:40:19

标签: cruisecontrol.net cvs commit

我搜索了很多,但我找不到解决问题的方法。

我使用CruiseControl.NET(1.4.4)。我的项目(在ccnet.config中)将存储库从cvs服务器加载到本地存储库,并启动一些可执行文件(msbuild,NUnit ...)。

我使用触发器(间隔或计划触发器),定期启动我的项目。但是如果我的项目没有被修改,它总是会启动所有下一个任务。我想避免它。所以我只想在检测到提交的情况下启动我的项目。

请问有什么解决方案吗?

由于

奥利弗

4 个答案:

答案 0 :(得分:4)

您的触发器需要指定IfModificationExists:

<intervalTrigger 
    name = "dave" 
    seconds = "30"   
    buildCondition = "IfModificationExists" />

虽然buildCondition="IfModificationExists"是默认值,但只要未设置为ForceBuild就可以了。

修改

URL Trigger可能对你有用。您可以将svn服务器设置为在commmit上修改页面,CC.Net会检查页面是否已更改,从而无法获取所有文件。

答案 1 :(得分:0)

我启动我的项目如下,这确保只有在有修改时才执行任务。

希望这有帮助,

丹麦安德斯

编辑:我的代码摘录没有进入页面 - 我试图用括号替换小于,大于。

[project name="SpilMerePool" queue="Q2" queuePriority="1"] [sourcecontrol type="svn"] [trunkUrl]https://ajf-ser1.ajf.local:8443/svn/SpilMerePool/trunk[/trunkUrl] [workingDirectory]c:\from_vc\SpilMerePool[/workingDirectory] [executable]C:\Program Files\VisualSVN Server\bin\svn.exe[/executable] [username]username[/username] [password]password[/password] [/sourcecontrol]

答案 2 :(得分:0)

只需使用IntervalTrigger,就像这样:

<triggers>
    <intervalTrigger />
</triggers>

您还可以添加modificationDelaySeconds,以便在上次提交后开始构建之前等待几秒钟。

    <modificationDelaySeconds>30</modificationDelaySeconds>

答案 3 :(得分:-1)

感谢Anders Juul abd Andy的快速回答。

通过将intervalTrigger与“IfModificationExists”构建条件一起使用,每次都必须加载项目(它是逻辑^^)。但我的项目规模约为450Mo。所以它有点长。 所以我的最后一个问题是:当检测到提交命令时,我们可以执行所有构建和下一个任务吗? (不加载所有文件,在CruiseControl中)。 我使用TortoiseCVS(版本1.10.10)。也许我们可以强制CruiseControl项目在提交后推出?