查询代理 运行 构建
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();
}
我正在尝试查询哪些代理当前 运行 使用 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();
}