强制建立一个持续时间CCNet

时间:2013-04-08 14:58:50

标签: triggers scheduled-tasks cruisecontrol.net scheduling ccnet-config

我是Cruise Control的新手,并且几天前在我的盘子上有一个不需要的突然项目。首先,我花了一些时间来了解这个巡航控制实际上是什么(我刚才知道Land Cruiser)。所以我不知道如何询问我的问题,所以请光临我或指导我。

我们有一堆项目将在Cruise Control中按顺序构建。我们为此配置了一切。现在,我的项目的一部分是在构建所有项目之后运行实用程序。由于项目将以固定顺序构建,我选择了最后一个项目(比如ProjectLast)进行跟踪。以下是在项目构建之后运行该实用程序的代码示例

<forcebuild>
    <project>MyUtility $(ccnet_branchlabel)</project>
    <integrationStatus>Success</integrationStatus>
    <enforcerName>ProjectLast $(ccnet_branchlabel)</enforcerName>
</forcebuild>

现在我想在上面的代码中运行MyUtility仅在14.00到18.00之间的修复持续时间内运行。有没有办法做到这一点?请帮我理解这个。感谢。

修改

如果我的上述问题不清楚,这就是我想要的。 ProjectLast版本成功完成,时间在14.00到18.00之间,然后MyUtility应该触发,否则不会触发。我希望现在很清楚。

1 个答案:

答案 0 :(得分:1)

我认为这应该大致完成你所追求的(未经测试)。当ProjectLast处于状态Success时(每30秒检查一次),它应该触发构建,时间介于14:0018:00之间(每60秒检查一次)

<multiTrigger operator="And">
  <triggers>

    <projectTrigger serverUri="tcp://server:21234/CruiseManager.rem" project="ProjectLast">
      <triggerStatus>Success</triggerStatus>
      <innerTrigger type="intervalTrigger" seconds="30" buildCondition="ForceBuild" />
    </projectTrigger>

    <filterTrigger startTime="14:00" endTime="18:00">
      <trigger type="intervalTrigger" seconds="60" />
      <weekDays>
        <weekDay>Sunday</weekDay>
      </weekDays>
    </filterTrigger>

  </triggers>
</multiTrigger>

cruisecontrol configuration(特别是triggers)的文档应该对所有可能性有足够的解释。

修改

所以目前,你有一些(我想象的)看起来像这样:

<project name="ProjectLast">

    <tasks>

        <!-- some build tasks etc etc -->

        <forcebuild>
            <project>MyUtility $(ccnet_branchlabel)</project>
            <integrationStatus>Success</integrationStatus>
            <enforcerName>ProjectLast $(ccnet_branchlabel)</enforcerName>
        </forcebuild>

    </tasks>

</project>

<project name="MyUtility">

    <tasks>

        <!-- whatever it is "MyUtility" does goes here -->

    </tasks>

</project>

我建议将配置更改为:

<project name="ProjectLast">

    <tasks>

        <!-- some build tasks etc etc -->

    </tasks>

</project>

<project name="MyUtility">

    <multiTrigger operator="And">
      <triggers>

        <!-- the url here will obviously need to change to match your server -->
        <projectTrigger serverUri="tcp://server:21234/CruiseManager.rem" project="ProjectLast">
          <triggerStatus>Success</triggerStatus>
          <innerTrigger type="intervalTrigger" seconds="30" buildCondition="ForceBuild" />
        </projectTrigger>

        <filterTrigger startTime="14:00" endTime="18:00">
          <trigger type="intervalTrigger" seconds="30" />
          <weekDays>
            <weekDay>Sunday</weekDay>
          </weekDays>
        </filterTrigger>

      </triggers>
    </multiTrigger>

    <tasks>

        <!-- whatever it is "MyUtility" does goes here -->

    </tasks>

</project>

请注意,我们已将项目MyUtility的决定移至MyUtility项目,而不是ProjectLast