0

数日前、Cruise Control に関連する望ましくない突然のプロジェクトが私の皿にありました。このクルーズコントロールが実際に何であるかを理解するのに少し時間がかかりました(私は今までランドクルーザーを知っていました).

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 秒ごとにチェック) で、時間が ~ の間(60 秒ごとに時間をチェック) のときにビルドをトリガーする必要があり14:00ます。18:00

<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 に答える