オンプレミスで TFS 2013 を使用しています。ビルド マシンで 4 つのビルド エージェントを構成しています。いくつかのビルド定義は、ASP .NET Web サイトをコンパイルします。Rackspace にある統合サーバーに IIS アプリケーションをデプロイするように msbuild パラメーターを構成しました。
デフォルトでは、webdeploy はファイルの日付を比較することで差分デプロイを行います。私の場合、ネットワークから Rackspace へのファイルのコピーにはかなりの時間がかかるため、これは大きな利点です。ここで、ファイルの日付を保持するために、ビルド エージェントはソース コードの同じ基本セットをコンパイルする必要があります。すべてのビルドで、差分ソース コードのみが新しい DLL を生成し、展開されるファイルの数を最小限に抑えます。
これらはすべて正常に機能しますが、注意点があります。特定のビルド定義を (エージェント名またはタグによって) ビルド エージェントに割り当てる必要があります。問題は、同じエージェントに割り当てられたすべてのビルドがキューに入れられると、不測の事態が発生することです。前のビルドが完了するまで、列に並んで待機します。
理想的な世界では、すべてのエージェントがすべてのビルドを処理できる必要がありますが、エージェントに関係なく、コンパイルされるソース コードは同じでなければなりません。
すべてのエージェントの作業フォルダーが同じ場所を指すように変更しようとしましたが、2 つのエージェントを同じフォルダーにマップできないため、エラーが発生します。エージェントごとに 1 つのワークスペースがあると思います。
何か案は?