4

TFS インフラストラクチャにいくつかのビルド コントローラーとエージェントをセットアップしようとしています。私たちの TFS サーバーはビルド コントローラーとしてセットアップされており、いくつかのビルド エージェントもセットアップされています。

システムで新しいビルドをキューに入れると、すべて問題ないように見えます。エラー メッセージは表示されず、システムのキューにビルドが表示されます。しかし、それはこれまでに起こったことのすべてです。Visual Studio でビルドのページに移動すると、「0 秒間実行中」と表示されます。TFS サーバーの管理コンソールを見ると、コントローラーは「準備完了」と表示されていますが、それ以上のことはありません。すべてのエージェントが同様に「準備完了」としてリストされます。

この問題の診断に使用できるログを認識していません。Logging Verbosity を「Diagnostic」に設定しましたが、Diagnostics ドロップダウンのオプションがグレー表示されています。アクティビティも完全に空白です。

ビルド コントローラーのデータベースを調べると、dbo.tbl_BuildController テーブルにビルドが一覧表示されます。しかし、私が奇妙だと思うのは、StartTime がNULL. VS でビルドを停止すると、開始時刻と終了時刻がデータベースで同じ時刻に設定されます。

したがって、ビルドがビルド コントローラーに登録されており、通信の問題がないことはわかっています。ビルドは開始されず、エラーも発生しません。どうすればこれを解決できますか? (または、少なくとも追跡できるエラーが発生します)。

編集: この問題は TFS サーバーに関連しているようです。イベントログで発見したことは次のとおりです。

WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/10411892
 Exception: System.ServiceModel.ServiceActivationException: The service '/tfs/queue/GPA/Services/v4.0/MessageQueueService2.svc' cannot be activated due to an exception during compilation.  The exception message is: This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. If your service is being hosted in IIS you can fix the problem by setting 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' to true or specifying 'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'.
Parameter name: item. ---> System.ArgumentException: This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. If your service is being hosted in IIS you can fix the problem by setting 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' to true or specifying 'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'.
Parameter name: item
   at System.ServiceModel.UriSchemeKeyedCollection.InsertItem(Int32 index, Uri item)
   at System.Collections.Generic.SynchronizedCollection1.Add(T item)
   at System.ServiceModel.UriSchemeKeyedCollection..ctor(Uri[] addresses)
   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
 Process Name: w3wp
 Process ID: 3756
4

4 に答える 4

3

イベントログを調べ始めます。

  1. コントロール パネル -> 管理ツール
  2. イベントビューア

そこに何らかの種類またはエラーが表示されると想定しています。ビルド エージェントが別のマシン上にある場合は、そこのイベント ログも確認してください。

元のポスターのコメントからの更新

イベント ログに例外があり、TFS2012 Build Service offlineを示していました。

于 2013-03-13T14:17:42.073 に答える
3

securityに使用されているユーザーの設定を確認してくださいbuild service properties。私はほぼ同じ問題を抱えていましたが、それは特定のユーザーのセキュリティ設定を変更したためで、突然ビルドできなくなりました。

ユーザーを見つけるには:

  1. TFS サーバーに移動します
  2. Team Foundation Server 管理コンソールを開く
  3. ビルド構成を開く
  4. ビルド サービスのプロパティを開く
于 2013-03-13T14:22:59.573 に答える
0

ビルド コントローラーとエージェントは、同じバージョンの Team Foundation ビルドを実行する必要があります。(Buid Service のバージョンは v4.0 や v4.1 のようなもので、11.0.50727.1 のような tfs 製品のバージョンとは異なります)

そのため、ビルド エージェントとコントローラーが異なるマシンにデプロイされている場合は、両方のマシンでビルド サービスのバージョンを確認してください。それは同じでなければなりません。

TFS は、異なるビルド サービス バージョンのビルド コントローラーにビルド エージェントを割り当てることを防ぎます。ただし、コントローラーとエージェントをデタッチせずに、ビルド マシンの 1 つを別のバージョン (たとえば、Visual Studio Update 2) にアップグレードすることは許可されています。 v4.0のまま)

この状況で、新しいバージョンのビルド サービスを適用する場合

tfs 2012 または 2013 で、ビルド サービスのバージョンを確認します。

  1. ビルドマシンに移動
  2. Team Foundation Server 管理コンソールを開く
  3. ビルド構成を開く
  4. ビルド サービスのプロパティを開きます (登録解除リンクの横にあるプロパティ リンクをクリックします)。
  5. 「ビルド エージェントの通信をリッスンする」テキスト ボックス

ビルドサービスのバージョン変更を適用する

  1. サービスを停止する
  2. 「変更」ボタンをクリック
  3. 別のポート番号を設定する
  4. 以前のポート番号をリセットする

すぐにビルド サービスのバージョンが v4.0 から v4.1 に変更されます

于 2014-02-20T12:06:28.850 に答える