2016-10-28 27 views
0

我們的一個要求是等待隊列中的TFS構建完成,然後我們需要執行下一個任務,我已經編寫了下面的代碼來實現這個功能,但是這並沒有給我想要的結果。如何等到TFS Build Queued在Powershell中完成

function Wait-QueuedBuild() 
{ 
    $serverName="http://tfs001:8080/tfs/Collection" 

    $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName) 

    $buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer]) 

    $build = $buildServer.QueueBuild($buildServer.GetBuildDefinition("CollectionUtility\BUILD_FULL",$_.Name)) 

    do 
    { 
     sleep 1   
    } 
    while (!(build.Status -eq 'InProgress')) 
} 

回答

0

您需要像安德烈所說的那樣持續查詢循環中的構建狀態。代碼應該是這樣的:

do { 
    sleep 1; 
    $queryoption = [Microsoft.TeamFoundation.Build.Client.QueryOptions]::All; 
    $build = $buildserver.GetQueuedBuild($build.Id,$queryoption); 
} 
while ($build.Status -eq 'InProgress') 
+0

非常感謝,那工作:) –

0

如果我沒有記錯的話,你實際上應該是在while循環而生成正在進行:

while (build.Status -eq 'InProgress') 

另外,我覺得你應該查詢構建更新與GetBuild方法

+0

謝謝你的工作:) –