2013-06-13 36 views
0

我們正在編寫一個允許我們在另一個應用程序的TFS下觸發構建的圖層。在TFS下我如何獲得與排隊構建關聯的構建?

意圖是Microsoft Dynamics CRM網站可以觸發構建。爲了簡化這一點,我們編寫了一個非常簡單的基於Web的服務,允許Dynamics站點開始構建,獲取標識符,然後輪詢狀態和結果。

構建的觸發執行以下操作:

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

然後我們的queuedBuild(標識)的標識返回給客戶端。然後它可以使用這個標識符來輪詢服務,以查看構建是否仍在運行或已經完成。問題是,儘管queuedBuild確實可以通過Build屬性訪問實際構建,但只有在構建達到隊列頭並啓動時纔會填充此構造。在那之前,這個屬性返回null(否則我們會使用構建標識符)。

好吧,我想我只是不停地查詢排隊構建的隊列。那麼,直到構建完成,然後將排隊的構建從隊列中刪除,現在我們不能再獲取構建信息。

我所追求的是一種無狀態地查詢TFS的方法,以查看被觸發的構建是否仍在隊列中,正在構建或已完成。有沒有辦法做到這一點?

回答

0

您可以用這種方式

queuedBuild.WaitForBuildStart(); 

時做此阻塞調用退出時,構建屬性將不會爲空

More information here: