4

Linux で実行されるアプリケーションと Windows で実行されるアプリケーションを含む複数のプラットフォーム アプリケーション セットがあります。次のビルドを達成したい:

サーバー L は、Linux 専用のサーバー アプリケーションであるプロジェクト A で CruiseControl を実行します。これは最初にビルドする必要があります。

プロジェクト A が正常にビルドされた場合、何らかの方法で開始する必要があります...

プロジェクト B、サーバー W で実行される Windows のみのクライアント アプリケーションで、CruiseControl.NET を使用 プロジェクト B には、サーバー データベースにデータを生成する最終的な効果を持つユニット テストが含まれています。プロジェクト B は、テストのビルドと実行に約 10 分かかります。

プロジェクト B が正常にビルドされると、辛抱強く待っていたサーバー L が、プロジェクト B によって生成されたデータベース エントリを探して検証するいくつかのテスト ケースを含むプロジェクト C を開始します。

これを実現する方法についてのアイデアはありますか? このリンクを見つけましたが、依存関係のない複数のプラットフォームで同じコード ベースを構築することを目的としているようです。

確かに、ある時点で誰かがこれを行ったに違いありませんか?

4

2 に答える 2

2

プロジェクトAをビルドするのは簡単です。公開フェーズでは、ファイルをネットワークドライブに書き込みます。

プロジェクトBは、ファイルシステムのソース管理ブロックを使用してネットワークファイルシステムを監視し、プロジェクトAからの変更に基づいてビルドをトリガーできます。完了すると、別のファイルがファイルシステム(別のディレクトリ)に書き込まれます。

プロジェクトCは、ファイルシステムのソース管理を使用して、プロジェクトBからの変更を監視しています。

すべて非常に簡単です。

共有ファイルシステムがない場合は、ftp、scp、またはhttpを使用してトリガーファイルを移動することもできます。

必要に応じて、プロジェクトAおよびプロジェクトBの公開フェーズから呼び出されるWebインターフェイスを使用してビルドをトリガーできます。


コメントの質問では、プロジェクトBが(少なくとも)2つの異なる方法で失敗したという情報を得ることができます。

1つは、CCの下にプロジェクトBを配置し、リモートプロジェクトBのプロキシとして機能させることです。リモートプロジェクトBは、公開フェーズ中にファイルを書き込み、ファイルに合格または不合格を示します。proxy-Bプロジェクトはそのファイルを監視し、その「ビルド」フェーズ中にファイルを読み取り、内容に基づいて合格または不合格にします。プロジェクトCは、CCのBuildStatus要素を使用してプロキシBを監視するようになりました。

この問題に取り組む別の方法は、CC.netのプロジェクトBを、JavaSpacesを使用してビルドをリモートエージェントに配布するCCのDistributedBuilderに置き換えることです。http://confluence.public.thoughtworks.org/display/CC/Using+distrib+from + the + CruiseControl + contrib

分散アプローチでは、プロジェクトBは引き続きWindowsマシンで実行されますが、DistributedBuilderはスクリプトをリモートで実行し、結果をCCサーバーに戻します。

于 2008-11-12T06:54:35.080 に答える
0

CruiseControl と CruiseControl.Net を混在させていますか? CruiseControl.Net のみのセットアップの場合は、Project Triggerを使用してください。

于 2009-06-11T13:17:22.057 に答える