3

マネージャーから、プロジェクトのビルド自動化をセットアップするように依頼されました。私は継続的インテグレーション サーバーとして CruiseControl.Net を使用することに決めました。他のチーム メンバーは経験がほとんどなく、私には経験がありません。そのため、このタスクを喜んで引き受けます。

Subversion をリポジトリとして使用しており、最終的な目標は、プロジェクトがタグ付けされるたびにビルドをインスタンス化することです。たとえば、次のようになります。

svn://svn/tags/ProjectX/ に svn://svn/tags/ProjectX/JulyCheckPoint などのフォルダーを追加すると、新しく追加されたタグ (svn://svn/tags/ProjectX/JulyCheckPoint) がローカル ディレクトリにチェックアウトされます。 (D:\temp\tags\ProjectX\JulyCheckPoint) を実行し、nant ファイル (D:\temp\tags\ProjectX\JulyCheckPoint\nant.build) を実行します。

CruiseControl が svn://svn/tags/ProjectX/ の変更を監視できることは知っていますが、最新のタグをビルド サーバーのローカル ディスクにチェックアウトし、その中で nant.build を実行する方法がわかりません。最新のタグの名前がわかりません。私は少しグーグルで調べましたが、svn post-commit フックは私が調べるべきものかもしれないと信じています。

詳細や説明が必要な場合はお知らせください。ガイダンス/アドバイスをいただければ幸いです。

乾杯。

4

4 に答える 4

2

/svn/tags/ProjectX/ の変更を監視する方法を知っているので、nant スクリプトをトリガーすることができます。このスクリプトは、svn に対してコマンドを実行して ( http://nantcontrib.sourceforge.net/release/0.85/help/tasks/index.htmlのsvn タスクを参照)、/svn/tags/ProjectX/ の最新フォルダーをチェックアウトできます。ここから、この nant スクリプトを使用して、nant タスクを使用してチェックアウト フォルダー内の nant スクリプトを呼び出すことができます。

于 2009-07-13T15:43:08.967 に答える
1

これはあなたの質問への回答ではありませんが、なぜ HEAD ではなくタグからビルドすることを選択したのか知りたいのですが?

通常、継続的インテグレーションは、ソース コード リポジトリに変更が加えられるたびにプロジェクト コードをビルドするために使用され、問題が早期に発見されるようにします。

Martin Fowlerのこの記事がとても気に入っています。継続的インテグレーションを使い始めたとき、それは私を大いに助けてくれました。

于 2009-07-14T14:52:01.287 に答える
0

これができると思う唯一の方法は、svn:externalsを使用して、タグを指すリポジトリを設定することです。

svn propget svn:externals blah

次に、それに対してチェックアウトを実行します。例:svn checkout http:// svn / repos / blah

CruiseControl.NETに

<checkExternals>True</checkExternals>
<checkExternalsRecursive>True</checkExternalsRecursive>

そのプロジェクトの構成で

于 2009-07-13T08:35:17.123 に答える
0

すべての支援者に感謝します。私は acloutier の提案を試すことにし、プロジェクトごとに静的な nant ファイルを作成しました。これらの nant ファイルは常にビルド サーバーに置かれます。

CruiseControl.Net (ビルド サーバーでセットアップ) は、各プロジェクトのタグ リポジトリを監視し、適切な静的 nant ファイルを起動します。次に、この nant ファイルは、svn://svn/tags/ProjectX/ の場所に最後に追加されたフォルダーの名前を決定するいくつかの C# コードを実行します。

最後に追加されたフォルダーの名前がわかれば、svn://svn/tags/ProjectX/ の下にある最近タグ付けされたプロジェクトをローカルの場所に svn チェックアウトし、プロジェクト内で nant ファイルを実行できます。

コードのスニペットや説明が必要な場合は、仕事に取り掛かるときに喜んで提供します。助けてくれてありがとう!

于 2009-07-16T00:49:56.777 に答える