実戦CruiseControl.NET+NAnt(二)-CC.NET中のトリガー
作者:Tony Qu
CC.NETのプロファイルは、インストールディレクトリのserverディレクトリの下にあります。cnet.co.nfigというファイルがあります。このファイルを配置してこそ、CC.NETは正常に動作します。
CCNetConfigを通して、cnet.co.figの構成内容についてたくさん学ぶことができます。まず、非常に重要な概念であるフリップフロップを見にきます。
ここのフリップフロップは現在の項目だけに対して有効であり、これらのトリガーはほとんどタレッジがない理由でもあります。例えばInterval Triggerは、すべての属性がトリガの対象に言及されていません。
CC.NETは6つのトリガーを提供する。
Interval Triggerは、文字通り、一定時間ごとにタスクをトリガするトリガーです。
Filter Triggerは単独で作業できないので、他のTriggerと一緒に使用しなければなりません。FilterTriggerというのは、トリガーをフィルタリングするための条件です。例えば、Interval Triggerを5分ごとに設定していますが、このInterval Triggerは作業時間だけでトリガしてほしいです。それでは、私達はFilterTriggerでInterval Triggerのトリガ時間を9:00~18:00まで制限できます。
MultiTriggerはWPFのMulti Triggerと似ています。複数のトリガーを同時に実行し、トリガーの結果をAndまたはOr操作します。
ScheduleTriggerとWindowsが持つ計画タスクの機能は非常に似ています。特定の時間にタスクをトリガすることができます。
Project Triggerは、指定されたCC.NET項目buildが完了した場合のみ、タスクをトリガするトリガーです。
UrlTriggerは、ある特定のUrlページの内容が変化したときだけ、タスクをトリガするトリガーです。
次の例を挙げます。
シーン1:daily buildのトリガーを設置したいです。毎日午前1時に一回触発して、平日だけして、土日はしません。
特定の時間循環トリガですので、ScheduleTriggerで実現できます。コードは以下の通りです。
シーン2:継続的に統合するには一定時間ごとにブートが必要で、以前のcheck inは動作可能であることが確定されています。だから、毎週月曜日から金曜日までの勤務時間(9:00~18:00)を設定してトリガし、15分ごとにトリガするトリガーが必要です。
ここではInterval Trigger+FilterTriggerを使用したいです。FilterTriggerはフィルタリング時間の9:00~18:00です。
シーン3:プロジェクトAのbuildが成功した後に、現在のプロジェクトbuild(通常プロジェクトAはコアコードライブラリであり、現在のプロジェクトはそれに依存しています。)をトリガします。成功したときだけトリガするので、triggerStatus=Successです。
CC.NETのプロファイルは、インストールディレクトリのserverディレクトリの下にあります。cnet.co.nfigというファイルがあります。このファイルを配置してこそ、CC.NETは正常に動作します。
CCNetConfigを通して、cnet.co.figの構成内容についてたくさん学ぶことができます。まず、非常に重要な概念であるフリップフロップを見にきます。
ここのフリップフロップは現在の項目だけに対して有効であり、これらのトリガーはほとんどタレッジがない理由でもあります。例えばInterval Triggerは、すべての属性がトリガの対象に言及されていません。
CC.NETは6つのトリガーを提供する。
Interval Triggerは、文字通り、一定時間ごとにタスクをトリガするトリガーです。
Filter Triggerは単独で作業できないので、他のTriggerと一緒に使用しなければなりません。FilterTriggerというのは、トリガーをフィルタリングするための条件です。例えば、Interval Triggerを5分ごとに設定していますが、このInterval Triggerは作業時間だけでトリガしてほしいです。それでは、私達はFilterTriggerでInterval Triggerのトリガ時間を9:00~18:00まで制限できます。
MultiTriggerはWPFのMulti Triggerと似ています。複数のトリガーを同時に実行し、トリガーの結果をAndまたはOr操作します。
ScheduleTriggerとWindowsが持つ計画タスクの機能は非常に似ています。特定の時間にタスクをトリガすることができます。
Project Triggerは、指定されたCC.NET項目buildが完了した場合のみ、タスクをトリガするトリガーです。
UrlTriggerは、ある特定のUrlページの内容が変化したときだけ、タスクをトリガするトリガーです。
次の例を挙げます。
シーン1:daily buildのトリガーを設置したいです。毎日午前1時に一回触発して、平日だけして、土日はしません。
特定の時間循環トリガですので、ScheduleTriggerで実現できます。コードは以下の通りです。
<scheduleTrigger time="1:00" buildCondition="ForceBuild" name="ScheduledTask1">
<weekDays>
<weekDay>MondayweekDay>
<weekDay>TuesdayweekDay>
<weekDay>WednesdayweekDay>
<weekDay>ThursdayweekDay>
<weekDay>FridayweekDay>
weekDays>
scheduleTrigger>
CCNetConfigに設定すると下図のようになります。シーン2:継続的に統合するには一定時間ごとにブートが必要で、以前のcheck inは動作可能であることが確定されています。だから、毎週月曜日から金曜日までの勤務時間(9:00~18:00)を設定してトリガし、15分ごとにトリガするトリガーが必要です。
ここではInterval Trigger+FilterTriggerを使用したいです。FilterTriggerはフィルタリング時間の9:00~18:00です。
<filterTrigger startTime="09:00" endTime="18:00">
<trigger type="intervalTrigger" seconds="600" />
<weekDays>
<weekDay>MondayweekDay>
<weekDay>TuesdayweekDay>
<weekDay>WednesdayweekDay>
<weekDay>ThursdayweekDay>
<weekDay>FridayweekDay>
weekDays>
filterTrigger>
CCNetConfigに設定すると下図のようになります。シーン3:プロジェクトAのbuildが成功した後に、現在のプロジェクトbuild(通常プロジェクトAはコアコードライブラリであり、現在のプロジェクトはそれに依存しています。)をトリガします。成功したときだけトリガするので、triggerStatus=Successです。
<triggers>
<projectTrigger project="task2">
<triggerStatus>SuccesstriggerStatus>
<innerTrigger type="intervalTrigger" seconds="1800" buildCondition="ForceBuild" />
projectTrigger>
triggers>
CCNetConfigに設定すると下図のようになります。