8

現在、継続的インテグレーション環境を構築中です。VisualSVNサーバーとCrusieControl.NETを使用しています。ビルドが失敗することがあり、CruiseControl.NET作業コピーに競合があるという症状があります。これは、VisualStudioソリューションのセットアップ方法によるものだと思います。この環境で実行するプロジェクトが多ければ多いほど、プロジェクトの設定方法についての理解が深まるので、この段階で競合が発生する理由については疑問の余地がありません。ビルドを修正するために、作業コピーを削除し、新しいビルドを強制します-これは毎回(現在)機能します。だから私の質問は次のとおりです:作業コピーを削除することは継続的インテグレーションビルドプロセスの有効な部分ですか、そしてそれをどのように行うのですか?

MSTaskやコマンドラインからdeleteを呼び出すなどの解決策を試しましたが、うまくいきません。

とても言葉遣いで申し訳ありません-良い仕事これはベータ版です:)

4

5 に答える 5

10

ビルドの前または後に完全削除を行うことをお勧めします。これは、ビルド環境が古いファイルを取得する可能性がないことを意味します。あなたの建物は、リポジトリにあるものとまったく同じです。

Nantで行ったように、作業コピーを削除することは可能です。

Nantでは、削除したいスクリプトとは別に、独自のフォルダーにクリーンなスクリプトを作成し、CC.netから呼び出します。

これはバッチファイルでも可能だと思います。rmdirコマンドを見てくださいhttp://www.computerhope.com/rmdirhlp.htm

@pauldoo

リリースビルドを実行するときに驚きを望まないので、CIサーバーで完全削除を実行することをお勧めします。これは、常にクリーンな状態から実行する必要があります。しかし、それは両方を処理できるはずです、理由はありません

于 2008-08-11T20:27:11.603 に答える
2

CC.NET の jira をチェックアウトすると、Subversion のCleanCopyを実装するためのパッチがチェックインされています。これは、TFS のものと同じように、ソース コントロール ブロック内で CleanCopy を true に設定するだけです。

于 2008-10-23T20:39:03.560 に答える
2

@jamie: 継続的インテグレーション サーバーを使用するときに毎回クリーン ビルドを実行できない理由が 1 つあります。それはビルド時間です。私が取り組んだいくつかのプロジェクトでは、クリーン ビルドに 80 分以上かかります (数千の C++ ファイルで構成される組み込みプロジェクトをチェックアウトし、複数のターゲットに対してコンパイルします)。この場合、素早いフィードバックの利点と、インクリメンタル ビルドではキャッチできないものをクリーン ビルドでキャッチできる可能性とを比較検討する必要があります。私たちの場合、CI マシンでのインクリメンタル ビルドを可能にすると同時に、ビルド プロセスの改善と並列化に取り組みました。クリーン ビルドを行っていなかったため、いくつかの問題がありましたが、毎晩または毎週クリーン ビルドを行うことで、CI マシンの高速なフィードバックを失うことなくリスクを取り除くことができました。

于 2008-08-25T12:01:25.290 に答える
0

重要なビルドを実行する前に、ビルドプロセスで「クリーン」を実行することは非常に一般的であり、一般的には良い習慣です。これにより、以前のビルドの「アーティファクト」が出力を汚染するのを防ぎます。

クリーンとは、基本的に、作業コピーを削除することによって実行していることです。

于 2008-08-11T20:16:01.967 に答える
0

@ブラッドバーカー

クリーンとは、ビルド製品を一掃することを意味します。

作業コピーを削除すると、他のすべて(ソースファイルやプロジェクトファイルなど)も削除されます。

一般に、ビルドマシンが完全な削除を行わなくても動作できると便利です。これは、通常の開発者が行うことを複製するためです。更新中に検出された競合は、開発者が期待できることに対する早期の警告です。


@jamie

正式なリリースの場合は、完全にクリーンなチェックアウトを行うことをお勧めします。ですから、ビルドの目的によると思います。

于 2008-08-11T20:21:52.953 に答える