0

几天前,我的盘子上有一个与巡航控制相关的不想要的突然项目。我花了一些时间才明白这个巡航控制系统到底是什么(直到现在我才知道陆地巡洋舰)。

我们有一堆项目将在 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 应该触发,否则不会触发。

4

1 回答 1

1

我认为这应该大致符合您的要求(未经测试)。ProjectLast它应该在处于状态时触发构建Success(每 30 秒检查一次),并且时间介于14:00和之间18: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>

巡航控制配置(特别是触发器)的文档应该对所有可能性有足够的解释。

编辑:

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

<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

于 2013-04-09T14:33:13.127 回答