チームビルドの共通ターゲットはどこに保存すればよいですか?
-
03-07-2019 - |
質問
チームビルドで使用し、TFSBuild.projファイルにインポートする一般的なmsbuildターゲットでcommon.targetsファイルを設定しようとしています。これを達成するための最良の方法は何ですか? common.targetsを各TFSBuild.projファイルのすぐ隣に保存する必要があるので、各チームビルドのターゲットファイルの複製が必要ですか、それとも別の方法がありますか?ビルドマシンのそれぞれにターゲットファイルを配置したくないです。
解決
Team Buildには、TFSBuild.projが呼び出される前にブートストラップフェーズがあり、TFSBuild.projと同じディレクトリ内の他のファイルのみがソース管理からダウンロードされます。 したがって、ターゲットファイルをソース管理下に置きたい場合は、TFSBuild.projと同じ場所に配置する必要があります
試したことはありませんが、ターゲットファイルをネットワーク共有に配置し、unc共有を使用してインポートできる場合があります。次のようなもの
<Import Project="\\anothermachine\share\something.targets"/>
ただし、そのためには、ビルドアカウントとデスクトップビルドを実行するすべてのユーザーがそのネットワーク共有にアクセスできる必要があります。
他のヒント
ソース管理で好きな共通の場所に置きます。ターゲットを使用する前に、次のようにTFSBuild.projファイルからgetを実行します。
<PropertyGroup>
<!--Path to the TFS Command Line (used for checkin and out)-->
<TxTf>"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf"</TxTf>
<WorkingDirectory>C:\YourPathHere<WorkingDirectory>
<CustomProjTFSDir>"$/YourProj/YourCustomProjPath"</CustomProjTFSDir>
</PropertyGroup>
<Exec WorkingDirectory="$(WorkingDirectory)"
Command="$(TxTf) get $(CustomProjTFSDir)"/>
この動作の鍵は、カスタムのものを指すビルドエージェントユーザー用のワークスペースをセットアップすることです。このディレクトリは、通常のビルドと同じスペースに置かないでください。
バッカーノ
一般的な.targetsファイルの目的は、スクリプトの重複を減らすことです。ソース管理下にこのファイルの複数のコピーがある場合、それらを変更する必要がある場合はどうなりますか(多分.exeパスを更新するために)?個人的には、他のすべてのビルドスクリプトが参照できる共通ファイル用の別の場所を好みます。これの唯一の欠点は、おそらくこのファイルへのパスをハードコーディングすることです。
これらをMSターゲットとともに$ Volume \ Program Files \ MSBuildに保存できます。これを行う利点は、組み込みの既知のメタデータ&quot; $(MSBuildExtensionsPath)\ Path \ To \ Your \ Targets&quot;
を使用して相対パスを作成できることです。