查询代理 运行 构建

Querying for agent running a build

我正在尝试查询哪些代理当前 运行 使用 TFS Extended Client 构建。这是针对新的 TFS 2015(非XAML)构建系统。

我可以使用下面的代码轻松查询当前 运行 构建,但我看不到任何访问代理 运行 构建详细信息的方法。 Build 类型的属性或任何 BuildHttpClient 方法似乎都没有暴露这一点。

有什么办法可以实现吗?

VssConnection connection = new VssConnection(new Uri("TfsUri"), new VssAadCredential());
var buildClient = connection.GetClient<BuildHttpClient>();               

var builds = await buildClient.GetBuildsAsync(
       statusFilter: BuildStatus.InProgress,
       project:"project"
);

foreach (var build in builds)
{
    var buildNumber = build.BuildNumber;
    var buildQueue = build.Queue;

    //How to query for agent executing build?
}

您可以潜在地使用构建的时间线记录中包含的workername属性作为代理的识别机制。

代理人的工作人员姓名通常与代理人姓名[匹配=27=] 添加到队列时。

通过您正在使用的 api 访问此构建细节;我针对已经完成和正在进行的构建进行了测试,此详细信息已在执行时填充,您可能需要进行额外的对象引用有效性检查,以防尚未将工作人员分配给指定的构建。

None 这里少了你的代码片段中的 foreach 循环修改为包括使用构建的时间线记录查找工作人员姓名。

foreach (var build in builds)
{
  var buildNumber = build.BuildNumber;
  var buildQueue = build.Queue;

  //How to query for agent executing build? ... Perhaps use the the worker name

  var buildDetail = await buildClient.GetBuildTimelineAsync(build.Project.Id, build.Id);
  var workerName = (string.IsNullOrEmpty(buildDetail.Records.Select(x => x.WorkerName).First())) ? "WORKER NOT INDICATED" : buildDetail.Records.Select(x => x.WorkerName).First();
 }