我在CruiseControl.net上有一个项目,我正在尝试为大多数日子的特定时间创建一个计划。
问题在于它不起作用。在我删除项目触发器之前,计划的时间在CCnet仪表板中不会更新。然后它工作..但它不是建立一个项目因此无用。
在我的 CCnet.config :
中 <project>
<name>MyProject-nightly</name>
<triggers>
<multiTrigger operator="And">
<triggers>
<projectTrigger project="MyProject" />
<scheduleTrigger time="11:23" buildCondition="ForceBuild">
<weekDays>
<weekDay>Monday</weekDay>
<weekDay>Tuesday</weekDay>
<weekDay>Wednesday</weekDay>
<weekDay>Thursday</weekDay>
<weekDay>Friday</weekDay>
<weekDay>Saturday</weekDay>
</weekDays>
</scheduleTrigger>
</triggers>
</multiTrigger>
</triggers>
</project>
当我删除此行时:
<projectTrigger project="MyProject" />
仪表板中的next build time
更新正确,并且它确实在指定的时间执行但显然没有任何反应。
这有什么问题?我使用 CruiseControl.net版本:1.5.7256.1
答案 0 :(得分:3)
你不必创建一个不同的项目。我认为你也误解了ProjectTrigger,如果另一个项目已经完成构建,ProjectTrigger将启动构建(在你的情况下,它会在MyProject完成构建时开始构建MyProject - 我不认为你想要的是什么。
你想要的行为究竟是什么?
如果您希望您的项目从源代码控制修改构建,并且您需要像这样进行配置:
<triggers>
<intervalTrigger name="Polling From source control" seconds="60" BuildCondition="IfModificationExists"/>
<scheduleTrigger time="23:30" buildCondition="ForceBuild" name="Nighly Build">
<weekDay>Monday</weekDay>
<weekDay>Tuesday</weekDay>
<weekDay>Wednesday</weekDay>
<weekDay>Thursday</weekDay>
<weekDay>Friday</weekDay>
<weekDay>Saturday</weekDay>
</scheduleTrigger>
</triggers>
严格等同于带有OR运算符的多重触发器。
答案 1 :(得分:2)
我确实找到了一种不同的方法来实现这一点,只是不做一个单独的项目并将其放在一个项目中:
<triggers>
<multiTrigger operator="And">
<triggers>
<intervalTrigger name="Continuous Integration" seconds="5" buildCondition="IfModificationExists" initialSeconds="30" />
<scheduleTrigger time="20:00" buildCondition="ForceBuild">
<weekDays>
<weekDay>Saturday</weekDay>
</weekDays>
</scheduleTrigger>
</triggers>
</multiTrigger>
</triggers>
这将在周六晚上8:00提供代码的预定构建,并在源代码更改时构建。
希望这可以帮助其他人尝试实现同样的目标。