ビルド前タスク - CruiseControl.NET での作業コピーの削除
質問
私は現在、職場で継続的統合環境をセットアップしているところです。VisualSVNサーバーとCrusieControl.NETを使用しています。場合によってはビルドが失敗し、CruiseControl.NET 作業コピー内で競合が発生するという症状が発生することがあります。これは、Visual Studio ソリューションのセットアップ方法が原因であると思います。この環境でより多くのプロジェクトを実行するほど、その設定方法についての理解が深まることを願っています。そのため、この段階で競合が発生する理由については疑問を抱いていません。ビルドを修正するには、作業コピーを削除し、新しいビルドを強制します。これは (現時点では) 毎回機能します。そこで私の質問は次のとおりです。作業コピーの削除は継続的インテグレーションのビルド プロセスの有効な部分ですか?どうすればよいですか?
MSTask やコマンドラインからの delete の呼び出しなどの解決策を試しましたが、うまくいきません。
くどくてごめんなさい - 頑張ってください、これはベータ版です :)
解決
ビルドの前後に完全削除を実行することをお勧めします。これは、ビルド環境が古いファイルを選択する可能性がないことを意味します。リポジトリにあるものと正確に一致する建物。
Nant で行ったので、作業コピーの削除は可能です。
Nant では、削除したいスクリプトとは別のクリーンなスクリプトを独自のフォルダーに保存し、それを CC.net から呼び出します。
これはバッチファイルでも可能だと思います。rmdirコマンドを見てみましょう http://www.computerhope.com/rmdirhlp.htm
@pauldoo
リリース ビルドを実行するときに予期せぬ事態が発生したくないため、CI サーバーは完全削除を実行することを好みます。リリース ビルドは常にクリーンな状態から実行する必要があります。しかし、両方を処理できるはずです。そうしない理由はありません
他のヒント
@ジェイミー:継続的統合サーバーを使用するときに毎回クリーン ビルドを実行できない理由の 1 つは、ビルド時間です。私が取り組んだ一部のプロジェクトでは、クリーン ビルドに 80 分以上かかりました (チェックアウトして複数のターゲットに対してコンパイルする数千の C++ ファイルで構成される組み込みプロジェクト)。この場合、高速フィードバックの利点と、インクリメンタル ビルドでは検出できないものをクリーン ビルドで検出できる可能性を比較検討する必要があります。私たちの場合、ビルド プロセスの改善と並列化に取り組み、同時に CI マシンでの増分ビルドを可能にしました。クリーン ビルドを行っていなかったため、いくつかの問題が発生しましたが、クリーン ビルドを毎晩または毎週実行することで、CI マシンの高速フィードバックを失うことなくリスクを取り除くことができました。
CC.NET をチェックアウトすると、 ジラ CleanCopy for Subversion を実装するためにチェックインされたパッチがあり、まさに必要なことを実行し、TFS の場合と同様にソース管理ブロック内で CleanCopy を true に設定するだけです。
重要なビルドを実行する前に「クリーン」を実行することは、ビルド プロセスにとって非常に一般的であり、一般に良い習慣です。これにより、以前のビルドからの「アーティファクト」が出力を汚すことがなくなります。
クリーンとは、基本的に作業コピーを削除することです。
@ブラッド・バーカー
クリーンとは、ビルド製品を単に消去することを意味します。
作業コピーを削除すると、他のすべてのファイル (ソース ファイルやプロジェクト ファイルなど) も削除されます。
一般に、完全削除を行わなくてもビルド マシンが動作できると便利です。これは、通常の開発者が行うことを複製するためです。更新中に競合が見つかった場合は、開発者が予想できることに対する早期警告となります。
@ジェイミー
正式リリースの場合は、完全にクリーンなチェックアウトを行う方が良いでしょう。したがって、それはビルドの目的によると思います。