我搜索了很多,但我找不到解决问题的方法。
我使用CruiseControl.NET(1.4.4)。我的项目(在ccnet.config中)将存储库从cvs服务器加载到本地存储库,并启动一些可执行文件(msbuild,NUnit ...)。
我使用触发器(间隔或计划触发器),定期启动我的项目。但是如果我的项目没有被修改,它总是会启动所有下一个任务。我想避免它。所以我只想在检测到提交的情况下启动我的项目。
请问有什么解决方案吗?
由于
奥利弗
答案 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项目在提交后推出?