2

私のかなり大規模なプロジェクトでは、高度にカスタマイズされたプロセステンプレート(XAML)を使用したゲートビルドを使用しています。この質問の範囲を超えた理由により、プロセスには単一のSharedResourceScopeがあるため、複数のビルドは並行して実行されません(Agentスコープで実行することになっていることはわかっていますが、エージェントを途中で切り替えるため、ラップされていますSharedResourceScopeを使用するすべて)。

これで、キューに複数のチェックインがある場合、それらすべてが「進行中」状態になり、1つを除くすべてがSharedResourceScopeで待機します。この意味は:

  • どのビルドが実際に実行されているかを人々は知ることができません
  • キューに入れられた新しいチェックインを優先度の高いものに設定しても、SharedResourceScopeを待機している進行中のすべての人を追い抜くことはできないため、優先度の設定全体にはほとんど意味がありません。

DefaultProcessTemplate.XAMLを使用して実験しましたが、通常は1つのビルドのみが進行中であることがわかります(ただし、2つのビルドが表示されることもあります)。

質問:

  1. ビルドはいつ開始され、「進行中」モードになりますか?すべてのビルドがすぐに開始され、AgentScope / SharedResourceScopeでブロックされるのを防ぐのは何ですか?

  2. すべてのビルドが進行しないようにするために、XAMLで作成できるものはありますか?

4

2 に答える 2

2

ビルド コントローラーに新しいビルドを開始する能力がある場合、ビルドが開始されます。ビルドでは 0 から n 個のエージェントを使用できるため、コントローラーはビルドの開始前にエージェントを取得するのを待ちません。コントローラーは、コントローラーのプロパティ (コード: ) の「同時ビルドの最大数」設定に基づいて、その容量を決定しますMaxConcurrentBuilds。デフォルト設定:「デフォルトのエージェント数」。

XAML でこの動作を制御する方法はありません。

また、これに関する TFS2010 のバグがあります。ホットフィックス: KB2567437

于 2012-05-01T11:05:48.280 に答える
0

TFS Build Extensionsを使用するとQueryBuildAgentStatus、プロセスを通じてエージェント コントロールを管理できる多くのアクティビティを取得IsBuildRunningできSetBuildAgentStatusます。現在のところ、それらはかなり文書化されていないため、実行するには実験する必要があります。ただし、パッケージには便利なヘルプ ファイルが含まれています。

「進行中」モードに関しては、ビルドがフリーエージェントを待っている場合でも、これがステータスであることに気付きました。そのようなビルドのログをチェックしてください。これは非常に紛らわしいので、MS が「Queued (but not started)」モードを追加することを願っています。

于 2012-04-24T12:10:27.127 に答える