我搜索了很多,但我没有找到解决我的问题的方法。
我使用 CruiseControl.NET (1.4.4)。我的项目(在 ccnet.config 中)将存储库从 cvs 服务器加载到本地存储库,并启动一些可执行文件(msbuild、NUnit...)。
我使用定期启动我的项目的触发器(间隔或计划触发器)。但是如果我的项目没有被修改,它总是会启动所有下一个任务。我想避免它。所以我只想在检测到提交时启动我的项目。
请问有什么解决办法吗?
谢谢
奥利维尔
我搜索了很多,但我没有找到解决我的问题的方法。
我使用 CruiseControl.NET (1.4.4)。我的项目(在 ccnet.config 中)将存储库从 cvs 服务器加载到本地存储库,并启动一些可执行文件(msbuild、NUnit...)。
我使用定期启动我的项目的触发器(间隔或计划触发器)。但是如果我的项目没有被修改,它总是会启动所有下一个任务。我想避免它。所以我只想在检测到提交时启动我的项目。
请问有什么解决办法吗?
谢谢
奥利维尔
您的触发器需要指定 IfModificationExists:
<intervalTrigger
name = "dave"
seconds = "30"
buildCondition = "IfModificationExists" />
虽然buildCondition="IfModificationExists"
无论如何都是默认设置,但只要它没有设置为 ForceBuild 你应该没问题。
编辑:
URL 触发器可能对您有用。您可以设置您的 svn 服务器在提交时修改页面,CC.Net 检查页面以查看它是否已更改,因此不会获取所有文件。
只需使用 IntervalTrigger,如下所示:
<triggers>
<intervalTrigger />
</triggers>
您还可以添加一个 modifyDelaySeconds,以在最后一次提交后开始构建之前等待几秒钟。
<modificationDelaySeconds>30</modificationDelaySeconds>
我按如下方式开始我的项目,以确保仅在有修改时才执行任务。
希望这可以帮助,
丹麦安德斯
编辑:我的代码摘录没有进入页面 - 我试图用括号替换小于,大于。
[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]
感谢 Anders Juul abd Andy 的快速回答。
通过使用带有“IfModificationExists”构建条件的intervalTrigger,每次都必须加载项目(这是合乎逻辑的^^)。但我的项目规模约为 450Mo。所以有点长。所以我的最后一个问题是:当检测到提交命令时,我们可以执行所有构建和下一个任务吗?(不加载所有文件,在 CruiseControl 中)。我使用 TortoiseCVS(版本 1.10.10)。也许我们可以强制 CruiseControl 项目在提交后启动?