1

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

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

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

请问有什么解决办法吗?

谢谢

奥利维尔

4

4 回答 4

4

您的触发器需要指定 IfModificationExists:

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

虽然buildCondition="IfModificationExists"无论如何都是默认设置,但只要它没有设置为 ForceBuild 你应该没问题。

编辑:

URL 触发器可能对您有用。您可以设置您的 svn 服务器在提交时修改页面,CC.Net 检查页面以查看它是否已更改,因此不会获取所有文件。

于 2009-06-15T09:04:17.243 回答
0

只需使用 IntervalTrigger,如下所示:

<triggers>
    <intervalTrigger />
</triggers>

您还可以添加一个 modifyDelaySeconds,以在最后一次提交后开始构建之前等待几秒钟。

    <modificationDelaySeconds>30</modificationDelaySeconds>
于 2009-06-15T09:21:30.790 回答
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]

于 2009-06-15T08:56:53.470 回答
-1

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

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

于 2009-06-15T09:27:49.527 回答