【问题标题】:CruiseControl.NET - How to publish build once in a day at specific timeCruiseControl.NET - 如何在一天的特定时间发布一次构建
【发布时间】:2011-12-15 23:14:05
【问题描述】:

我们将 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 工程师希望每天早上都获得“新鲜”构建,而不是一天 20 次 :)

有人知道如何用 CC.NET 制作这个吗?

[更新]

我们仍然需要构建每个提交,但每天只将这个提交提交到 Web 服务器一次

【问题讨论】:

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


【解决方案1】:

使用 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

添加以解决评论:

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

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

如果您想保持构建分开,您还可以有一个完全独立的项目块 - 一个按计划触发器运行,一个按间隔运行,但存在风险,需要规划配置.以下是潜在的考虑因素:

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

【讨论】:

  • 感谢您的回答,我对我的问题进行了更新。它改变了你的答案吗?
  • @Evgeniy Labunskiy - 我更新了我的答案,因为回复太长,无法发表评论。
  • 非常感谢!我做了 2 个项目 - 一个只是构建新的提交,第二个构建和发布
【解决方案2】:

您可以添加一个计划触发器,强制在特定时间构建您的项目,即以下代码将在每个工作日的早上 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>  

【讨论】:

  • 感谢您的回答,我对我的问题进行了更新。它改变了你的答案吗?
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 2015-09-22
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多