Per*_* P. 2 c# tfs asp.net-web-api tfs-2015
我正在尝试使用TFS扩展客户端查询当前正在运行构建的代理程序.这适用于新的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?
}
Run Code Online (Sandbox Code Playgroud)
您可以使用构建时间轴记录中包含的workername属性作为代理的标识机制.
代理程序的工作程序名称通常在添加到队列时与代理程序名称匹配.
要通过您正在使用的API访问构建的这个细节; 我针对已经完成并且正在构建的构建进行了测试,这个细节已经在执行点填充,如果尚未将工作者分配给指定的构建,您可能希望执行其他对象引用有效性检查.
尽管如此,修改后的片段中的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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |