CruiseControl.NET - 如何在特定时间一天发布一次构建

时间:2011-12-15 14:34:36

标签: asp.net-mvc-3 cruisecontrol.net

我们将CC.NET作为持续集成环境。 CC从Git获取每个提交,构建并发布到服务器。

这是配置:

        <buildpublisher
            <sourceDir>Path_to_dir_with_source</sourceDir>
            <publishDir>path_to_deploy</publishDir>
            <cleanPublishDirPriorToCopy>true</cleanPublishDirPriorToCopy>
            <useLabelSubDirectory>false</useLabelSubDirectory>
            <alwaysPublish>true</alwaysPublish>
        </buildpublisher>

但是我们的QA engeneer希望每天早上获得“新鲜”,而不是每天20次:)

有人知道如何用CC.NET做到这一点吗?

[UPDATE]

我们仍然需要构建每个提交,但是这个提交只在一天内发送到Web服务器

2 个答案:

答案 0 :(得分:6)

使用ScheduleTrigger块:

<scheduleTrigger time="23:30" buildCondition="ForceBuild" name="Scheduled">
  <weekDays>
    <weekDay>Monday</weekDay>
  </weekDays>
</scheduleTrigger>

您也可以使用cronTrigger或intervalTrigger,但对于您的情况,scheduleTrigger似乎最简单。

http://www.cruisecontrolnet.org/projects/ccnet/wiki/Trigger_Blocks

已添加以发表评论:

您可以在一个Project块中拥有多个触发器。

我们有一个间隔触发器和一个Schedule Trigger。您可以根据需要拥有尽可能多的触发器。

如果您希望将构建分开,您还可以拥有一个完全独立的Project块 - 一个在Schedule触发器上运行的块,一个在一个间隔上运行的块,但是存在风险,并且需要计划配置。以下是潜在的考虑因素:

  1. 如果这样做,请确保将源代码签出到不同的目录,否则如果两个目录同时运行,则可能会遇到冲突。
  2. 即使源代码签出是针对不同的目录,如果两个项目都发布到同一个输出位置,仍然会遇到冲突。

答案 1 :(得分:0)

您可以添加一个计划触发器,强制在特定时间构建项目,即以下内容将在每个工作日上午5点运行构建:

   <triggers>
      <scheduleTrigger time="05:00" buildCondition="ForceBuild">
        <weekDays>
            <weekDay>Monday</weekDay>
            <weekDay>Tuesday</weekDay>
            <weekDay>Wednesday</weekDay>
            <weekDay>Thursday</weekDay>
            <weekDay>Friday</weekDay>
        </weekDays>
      </scheduleTrigger>
   </triggers>