0

Team Build 2008 では、ビルドのドロップ場所は .proj ファイルで指定されなくなり、代わりにデータベースに格納され、GUI ツールで維持されます。

GUI ツールは、ドロップ場所としてネットワーク パス (つまり、\\server\share) のみを受け入れ、ローカル パスは受け入れません。

私たちのビルド サーバーはドロップされたファイルもホストしているため、多数のファイルをコピーするときにネットワーク共有を介してファイル コピー操作を強制すると、多くの遅延時間が発生するようです。この機能をオーバーライドして、ドロップ場所にローカル ディレクトリを指定できるようにしたいのですが、方法がわかりません。

4

3 に答える 3

0

私は2008バージョンだけで2005バージョンを使ったことがありませんが、これは手動で行うことができるようです。SkipDropBuildプロパティをtrueに設定します。次に、Team Buildに組み込まれているCopyコマンドを使用して、BeforeDropBuildイベントですべてのバイナリを手動でコピーします。

このようなもの:

<SourceDir>$(SolutionRoot)\..\Binaries\Release</SourceDir>
<SkipDropBuild>true</SkipDropBuild>
<CreateItem Include="$(SourceDir)\**\*.*">
        <Output TaskParameter="Include" ItemName="BuiltBinaries"/>
</CreateItem>
<Target Name ="BeforeDropBuild">
        <Copy SourceFiles="@(BuiltBinaries)" DestinationFiles="@(BuiltBinaries->'C:\droplocation\%(Filename)%(Extension)')"/>
</Target>
于 2008-12-03T22:06:20.577 に答える
0

私はより簡単な解決策を見つけました。それは、Release フォルダーでファイル システムを移動することです。ドロップ場所は実際には同じ物理ドライブ上にあるので、それで問題ありません。これを TFSBuild.proj ファイルに追加しました。

<Target Name="CoreDropBuild"
        Condition=" '$(SkipDropBuild)'!='true' and '$(IsDesktopBuild)'!='true' "
        DependsOnTargets="$(CoreDropBuildDependsOn)" >
    <Exec Command="move $(BinariesRoot)\Release d:\BuildOutput\$(BuildNumber)\Release"/>
</Target>
于 2008-12-09T13:12:00.230 に答える
0

実際の BuildDropLocation は、ネットワーク共有で利用できる必要があります。ドロップ場所は、テスト結果を公開するときに、クライアントと TFS アプリケーション層によって使用されます。また、ビルド結果にアクセスするときに、クライアントと TFS アプリケーション層マシンの両方からアクセスできる必要があります。データ ウェアハウスの手順の一部として、TFS アプリケーション層マシンは、ドロップ場所を介してビルド結果にアクセスし、ウェアハウスに追加するテスト結果ファイルを見つけます。

つまり、ビルド サーバーがドロップ ロケーション共有をホストしているマシンと同じであり、常に同じマシンであると仮定すると、TFSBuild.proj からのドロップ ステップをスキップできます。1 つの解決策は、おそらくToddChadによって概説されたものの組み合わせ、つまり次のようなものです。

<SkipDropBuild>true</SkipDropBuild>
<Target Name ="AfterDropBuild">
        <Exec Command="move $(BinariesRoot)\Release d:\BuildOutput\$(BuildNumber)\Release"/>
</Target>

「リリース」部分を実際にハードコーディングする必要はありませんが、構成プロパティからそれを取得できることに注意してください。デスクに戻ったら調べて、それに応じてこの回答を編集します。

そうは言っても、これを行うにはかなりのリスクが伴います。

  1. すべてのファイル パスが正確に並んでいることを確認する必要があります。そうしないと、ビルド ログを表示したり、TFS ウェアハウスにテスト結果を入力したりすることが機能しなくなる可能性があります。
  2. 常に同じマシン上に存在するように、ビルドとドロップの場所をハードコーディングします。誰かが別のマシンで TFSBuild.proj ファイルをビルドしようとすると、期待どおりに動作しません。
  3. 誰かがビルド定義でドロップ場所のプロパティを編集する場合、TFSBuild.proj ファイルで対応する編集を行う必要があります。

したがって、このアプローチには保守性の問題があるため、ほとんどの場合はお勧めしません。テストを行って、これが実際にどのくらいの時間を節約できるかを確認して、自分の状況で最適化する価値があるかどうかを判断する価値があります.

于 2009-08-07T22:43:44.370 に答える