CruiseControl.NETは、最終ビルドラベル以降のIfModificationExistsを毎晩ビルドします
-
05-07-2019 - |
質問
1台のサーバーを使用して、同じプロジェクトを継続的および夜間に構築しています。ただし、日中に変更が存在する場合にのみ、ナイトリービルドをビルドしたいと思います。私は両方のビルドが同じ作業フォルダーを使用するという制約でこれを達成したいと思っています。
検討している2つのオプションは次のとおりです。
-
連続ビルドをポーリングし、連続ビルドが発生した場合のみ夜間ビルドをビルドします-おそらくトークンシステムを使用します(連続ビルドセットトークン、夜間クリアトークン)。
-
ビルド前タスクを実行してソースコードを最終ビルド時刻に戻す
ビルドスクリプトを分離するため、2番目のオプションに傾いていますが、それははるかに難しいタスクのようです。
これを行うための提案とヒントをいただければ幸いです!
追加情報:
CIビルドは、 1つの構成でのソリューションと 多分、いくつかの高速な単体テストを実行します。
ナイトリービルドはビルドをクリーンにします 環境、ソフトウェアのビルド、パッケージ化 インストーラー、拡張テストの実行、ラベル付け ソースコードリポジトリ、展開 サーバー共有へのインストーラー 手動テスターが受け取り、メール テスト可能なビルドを行うテストチーム 作られました。
私は 夜間ビルドがあった場合に発生する 実質的に同じビルドのテスターが繰り返しメールに悩まされることがないように、日中のチェックイン。
解決 2
新しいソリューションに満足しています...
私は、MultiTriggerとscheduleTriggerおよびprjectTriggerをナイトリービルド(フルビルドを呼び出す方が良い)およびWriteModification / ReadModificationペアで使用して、この質問。
他のヒント
このタスクを単純化しすぎているかもしれませんが、プロジェクトに2つのトリガーを単純にセットアップすることはできませんか?連続ビルド用の1つの間隔トリガーと、夜間ビルド用のIfModificationExists条件を持つ1つのスケジュールトリガー。
<triggers>
<intervalTrigger seconds="60" name="Continuous" />
<scheduleTrigger time="23:30" buildCondition="IfModificationExists" name="Scheduled">
<weekDays>
<weekDay>Monday</weekDay>
</weekDays>
</scheduleTrigger>
</triggers>