Как дождаться завершения очереди сборки TFS в Powershell

Одно из наших требований - дождаться завершения сборки TFS, находящейся в очереди, а затем нам нужно выполнить следующую задачу. Я написал приведенный ниже код для достижения этой цели, но это не дает мне желаемых результатов.

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'))
}

2 ответа

Решение

Вы должны продолжать запрашивать статус сборки в цикле, как упоминал Андрей. Код должен понравиться:

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

Если я не ошибаюсь, вы должны быть в цикле while, пока идет сборка:

while (build.Status -eq 'InProgress')

Кроме того, я думаю, что вы должны запросить сборку обновлений с помощью метода GetBuild

Другие вопросы по тегам