如何等到 TFS Build Queued 在 Powershell 中完成
How to wait till the TFS Build Queued is completed in 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'))
}
如果我没记错的话,您实际上应该在构建过程中处于 while 循环中:
while (build.Status -eq 'InProgress')
此外,我认为您应该使用 GetBuild 方法
查询更新的构建
你需要像Andrey提到的那样在循环中不断查询构建状态。代码应该是这样的:
do {
sleep 1;
$queryoption = [Microsoft.TeamFoundation.Build.Client.QueryOptions]::All;
$build = $buildserver.GetQueuedBuild($build.Id,$queryoption);
}
while ($build.Status -eq 'InProgress')
我们的一个要求是等到排队的 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'))
}
如果我没记错的话,您实际上应该在构建过程中处于 while 循环中:
while (build.Status -eq 'InProgress')
此外,我认为您应该使用 GetBuild 方法
查询更新的构建你需要像Andrey提到的那样在循环中不断查询构建状态。代码应该是这样的:
do {
sleep 1;
$queryoption = [Microsoft.TeamFoundation.Build.Client.QueryOptions]::All;
$build = $buildserver.GetQueuedBuild($build.Id,$queryoption);
}
while ($build.Status -eq 'InProgress')