【问题标题】:CruiseControl.NET build nightly IfModificationExists since Last Build LabelCruiseControl.NET 每晚构建 IfModificationExists since Last Build Label
【发布时间】:2010-02-17 17:38:22
【问题描述】:

我正在使用一台服务器连续和每晚构建同一个项目;但是,我希望仅在白天存在修改时才构建夜间构建。我希望通过两个构建都使用相同的工作文件夹的约束来实现这一点。

我正在考虑的两个选项是:

  1. 轮询持续构建并仅在发生持续构建时构建夜间构建 - 可能使用某些令牌系统(连续构建设置令牌,每晚清除令牌)。

  2. 运行预构建任务以将源代码恢复到上次构建时间

我倾向于第二个选项,因为它可以解耦构建脚本,但这似乎是一项艰巨的任务。

我们将不胜感激建议和提示!

补充信息:

CI 构建是 一种配置的解决方案和 可能会运行一些快速的单元测试。

每晚构建清理构建 环境,构建软件,打包成一个 安装程序,运行扩展测试,标签 源代码存储库,部署 安装程序到服务器共享 手动测试人员接听和电子邮件 可测试构建的测试团队 已经制作好了。

我只想要 如果有,则每晚构建 白天进行任何签入,这样测试人员就不会为基本相同的构建重复发送电子邮件所困扰。

【问题讨论】:

    标签: cruisecontrol.net nightly-build


    【解决方案1】:

    我可能过度简化了这项任务,但您不能简单地在项目上设置两个触发器吗?一个用于连续构建的间隔触发器和一个用于夜间构建的带有 IfModificationExists 条件的计划触发器。

    <triggers>
      <intervalTrigger seconds="60" name="Continuous" />
      <scheduleTrigger time="23:30" buildCondition="IfModificationExists" name="Scheduled">
          <weekDays>
            <weekDay>Monday</weekDay>
          </weekDays>
      </scheduleTrigger>
    </triggers>
    

    【讨论】:

    • 这也是我的第一个想法,但是这种方法的问题是不会检测到 scheduleTrigger 的修改。
    • 没错。我想问一下,如果您正在运行 CI,那么夜间构建的意义何在?你的代码不是总是最新的吗?
    • CI 构建是在一个配置中快速构建解决方案,可能会运行一些快速的单元测试。每晚构建会清理构建环境,打包到安装程序中,运行扩展测试,标记源代码存储库,将安装程序部署到服务器共享以供手动测试人员获取,并通过电子邮件向测试团队发送可测试的构建已经完成。如果白天有任何签到,我只希望夜间构建发生。我也会用这些附加信息修改我原来的问题。
    【解决方案2】:

    我对我的新解决方案很满意...

    我在夜间构建(最好称为完整构建)和 WriteModification/ReadModification 对中使用带有 scheduleTrigger 和 prjectTrigger 的 MultiTrigger 来传播修改历史记录,如 this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多