在TFS下如何获得与排队构建相关联的构建?

时间:2013-06-13 10:36:28

标签: build tfs tfsbuild

我们正在编写一个层,允许我们从另一个应用程序触发TFS下的构建。

目的是Microsoft Dynamics CRM站点可以触发构建。为了使这更简单,我们编写了一个非常简单的基于Web的服务,允许Dynamics站点启动构建,获取标识符,然后轮询状态和结果。

触发构建会执行以下操作:

IBuildRequest buildRequest = buildDefinition.CreateBuildRequest();
IQueuedBuild queuedBuild = buildServer.QueueBuild(buildRequest);

然后我们将queuedBuild(Id)的标识符返回给客户端。然后,它可以使用此标识符轮询服务,以查看构建是否仍在运行或已完成。问题是虽然queuedBuild确实允许我们通过Build属性访问实际的构建,但只有在构建到达队列的头部并且启动时才会填充。在此之前,此属性返回null(否则我们将使用构建标识符)。

好的,所以我想我只是继续查询排队的构建队列。好吧,直到构建完成,然后排队的构建从队列中删除,所以现在我们不能再获取构建信息。

我所追求的是一种无状态查询TFS以查看触发的构建是否仍在队列中,正在构建或已完成的方法。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以这样做

queuedBuild.WaitForBuildStart();

当此阻塞调用退出时, Build 属性将不为null

More information here: