我正在尝试从 TFS 获得特定的构建,但这非常困难。我有一个 MVC 应用程序可以触发这样的构建:
IBuildServer buildServer = (IBuildServer)Server.GetService(typeof(IBuildServer));
IBuildDefinition def = buildServer.GetBuildDefinition(TeamProject, BuildDefinition);
var queuedBuild = buildServer.QueueBuild(def);
QueueBuild 返回 IQueuedBuild,我希望做这样的事情:
return queuedBuild.Build.BuildNumber
这样我就有了一些独特的价值,我可以用它来查询构建服务器以获取正确的构建。不幸的是,当执行退出此方法时,Build 可能为空,也可能不为空,所以这是不行的。
构建排队后,我然后轮询此方法
public string GetBuildStatus(string TeamProject, string BuildDefinition, string BuildNumber)
{
string status = string.Empty;
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(TeamProject, BuildDefinition);
buildDetailSpec.MaxBuildsPerDefinition = 1;
buildDetailSpec.Status = BuildStatus.InProgress | BuildStatus.None;
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
IBuildQueryResult queryResult = buildServer.QueryBuilds(buildDetailSpec);
if (queryResult.Builds.Length > 0)
{
status = queryResult.Builds[0].Status.ToString();
}
return status;
}
这在某种程度上可行,但如果队列中有多个构建,我无法在此轮询方法中知道我正在使用的构建是否是我在第一种方法中排队的构建。有谁知道我可以做些什么来取回在第一种方法中排队的特定构建?
谢谢!