CruiseControl.netにおけるCCNetArtifactDirectory
の問題のトラブルシューティング
自動ビルドシステムを設定することは難しい場合があります。特にプラットフォーム固有の設定に対処する際はそうです。開発者が直面する一般的な課題の一つは、CruiseControl.net
とMSBuild
タスクを統合することです。このブログ投稿では、CCNetArtifactDirectory
を効果的に使用する方法を明確にし、プロジェクトファイルに不必要な変更を加えることなく、ビルド出力が適切に管理されることを保証します。
問題の理解
CruiseControl.net
の設定中にMSBuild
タスクの構成に関する問題が発生することがあります。ここでの主な質問は次の通りです:
エラーを引き起こすことなく、MSBuild内で
CCNetArtifactDirectory
を効果的に利用するにはどうすれば良いですか?
混乱が生じる理由は、CCNetArtifactDirectory
がMSBuildに自動的に渡されるはずであるにもかかわらず、多くのユーザーがビルド引数でそれを正しく参照できないことです。一般的に見られるエラーは次のようなものです:
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Reference to unknown symbol CCNetArtifactDirectory
解決策を見ていきましょう。
解決策
CCNetArtifactDirectory
を気にしないでください
良いニュースは、MSBuildコマンド内で直接CCNetArtifactDirectory
を指定する必要がないということです。デフォルトでは、CruiseControl.netはこのディレクトリをMSBuildに渡し、設定で指定した作業ディレクトリに基づいてビルド出力を適切な場所に配置します。
以下は設定の例です:
<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>
出力場所
上記の設定を使用すると、ビルドからの出力は次の場所に送信されます:
C:\data\projects\FooSolution\[ProjectName]\bin\Debug
これは、アーティファクトが正しく生成されていることを意味し、CCNetArtifactDirectory
を指定することを心配する必要はありません。
出力場所のカスタマイズ
ただし、出力を別の場所に送信したい場合は、CruiseControl.net設定の<publishers>
セクションを介してこれを実現できます。
出力ディレクトリをカスタマイズする方法は次のとおりです:
<publishers>
<xmllogger />
<buildpublisher>
<sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
<publishDir>C:\published\FooSolution\</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
</publishers>
このサンプル設定では:
sourceDir
:MSBuildがアーティファクトを公開するディレクトリを指定します。publishDir
:ビルド出力を公開したい場所を設定します。useLabelSubDirectory
:このオプションは、公開パスにラベルディレクトリを含めるか除外するかを切り替えることができます。
まとめ
CruiseControl.netとMSBuildを統合することは、難しいタスクである必要はありません。CCNetArtifactDirectory
を直接参照する必要がないことを認識することで、ビルドプロセスを効果的に簡素化できます。ビルド出力をリダイレクトする必要がある場合は、<publishers>
セクションを適切に設定するだけです。
これらの解決策を手に入れれば、自動ビルドの構成をスムーズに処理するための準備が整います。
これで、MSBuildを使用してCruiseControl.netのCCNetArtifactDirectory
の問題に対処する方法に関する概要が終了します。この知識を活用して、あなたのワークフローを向上させ、開発体験をスムーズにしましょう!