如何确定给定构建在 TFS 中使用哪个构建代理?
How can I determine which build agent a given build uses in TFS?
我有以下总体上非常有用的查询,但我似乎无法确定我的构建使用了哪个构建代理。 注意: - 这是基于 @Patrick-MSFT 提供的出色帮助的工作代码。
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("***"));
IBuildServer buildServer = (IBuildServer) tfs.GetService(typeof (IBuildServer));
var buildDetail = buildServer.CreateBuildDetailSpec("Team Project","Dev-CI");
buildDetail.MinFinishTime = DateTime.Now.Date.AddDays(-2);
var buildResult = buildServer.QueryBuilds(buildDetail).Builds.Dump();
buildInformation.Nodes.Where (i => i.Type == "ActivityTracking").FirstOrDefault ().Children.Nodes.Where (n => n.Type == "AgentScopeActivityTracking").FirstOrDefault ().Fields["ReservedAgentUri"].Dump("Agent");
构建将分配给任何在线代理。构建完成后,您应该能够从 IBuildDetail
的信息 (IBuildInformation) 属性 中获取代理信息。您可以尝试获取具有以下类型的节点:InformationTypes.AgentScopeActivityTracking Field and InformationFields.ReservedAgentName Field or InformationFields.ReservedAgentUri Field
示例代码:
IBuildInformation buildInformation = buildDetail.Information;
IBuildInformationNode[] buildInformationNodes = buildInformation.Nodes;
string agentUri = buildInformationNodes[0].Children.Nodes[3].Fields["ReservedAgentUri"];
IBuildAgent buildAgent = buildService.GetBuildAgent(new Uri(agentUri));
更多细节可以参考类似问题:TFS build duration report by agent
我有以下总体上非常有用的查询,但我似乎无法确定我的构建使用了哪个构建代理。 注意: - 这是基于 @Patrick-MSFT 提供的出色帮助的工作代码。
TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("***"));
IBuildServer buildServer = (IBuildServer) tfs.GetService(typeof (IBuildServer));
var buildDetail = buildServer.CreateBuildDetailSpec("Team Project","Dev-CI");
buildDetail.MinFinishTime = DateTime.Now.Date.AddDays(-2);
var buildResult = buildServer.QueryBuilds(buildDetail).Builds.Dump();
buildInformation.Nodes.Where (i => i.Type == "ActivityTracking").FirstOrDefault ().Children.Nodes.Where (n => n.Type == "AgentScopeActivityTracking").FirstOrDefault ().Fields["ReservedAgentUri"].Dump("Agent");
构建将分配给任何在线代理。构建完成后,您应该能够从 IBuildDetail
的信息 (IBuildInformation) 属性 中获取代理信息。您可以尝试获取具有以下类型的节点:InformationTypes.AgentScopeActivityTracking Field and InformationFields.ReservedAgentName Field or InformationFields.ReservedAgentUri Field
示例代码:
IBuildInformation buildInformation = buildDetail.Information;
IBuildInformationNode[] buildInformationNodes = buildInformation.Nodes;
string agentUri = buildInformationNodes[0].Children.Nodes[3].Fields["ReservedAgentUri"];
IBuildAgent buildAgent = buildService.GetBuildAgent(new Uri(agentUri));
更多细节可以参考类似问题:TFS build duration report by agent