Моим первоначальным намерением было указать вам TFS OLAP Cube и описать, как вы можете получить то, что вы искали.Затем я понял, что куб не предоставляет информацию о том, какой агент создал для чего Build.
Тогда я подумал, что было бы просто написать небольшое консольное приложение TFS, которое будет печатать информацию, которую вы ищете:
using System;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
namespace BuildDetails
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFS:8080/tfs/CoLLeCtIoNNaMe"));
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
IBuildDefinition buildDefinition = buildService.GetBuildDefinition("TeamProjectName", "BuildDefinitionName");
IBuildDetail[] buildDetails = buildService.QueryBuilds(buildDefinition);
foreach (var buildDetail in buildDetails)
{
Console.Write(buildDetail.BuildNumber+"\t");
Console.Write(buildDefinition.Name+"\t");
Console.Write(buildDetail.BuildAgent.Name+"\t");
Console.Write(buildDetail.Status+"\t");
Console.Write(buildDetail.StartTime+"\t");
Console.WriteLine((buildDetail.FinishTime - buildDetail.StartTime).Minutes);
}
}
}
}
Это не скомпилируется, так как
В конце концов я нырнул в IBuildInformationNode[]
и получил агента построения следующим образом:
IBuildInformation buildInformation = buildDetail.Information;
IBuildInformationNode[] buildInformationNodes = buildInformation.Nodes;
string agentName;
try
{
agentName = buildInformationNodes[0].Children.Nodes[3].Fields["ReservedAgentName"];
}
catch
{
agentName = "Couldn't determine BuildAgent";
}
Console.Write(agentName + "\t");
Попытка перехвата необходима, чтобы вы могли иметь дело со сборками, которые были неудачными / остановленными до выбора агента.
Если вы используете эту последнюю часть вместо сбойной Console.Write(buildDetail.BuildAgent.Name+"\t");
в итоге вы должны получить консольное приложение, вывод которого можно передать в файл * .CSV и затем импортировать в Excel.