如何从命令行获取此刻运行的TFS构建列表?

And*_*yTS 3 powershell tfs tfsbuild

我正在尝试自动化部署过程,作为其中的一部分,我需要从命令行运行我的发布版本.我可以使用命令这样做

.\TFSBuild start http://server-name:8080/tfs/project-collection project-name build-name priority:High /queue

它甚至为排队的构建返回一些代码 - Build queued. Queue position: 2, Queue ID: 11057.

我不知道的是,如何获取有关当前正在运行的构建的信息,或者从powershell命令行获取正在运行的构建状态最终目标是在构建完成后开始发布.

我已经拥有了所有必要的powershell脚本来从构建结果创建部署包,压缩它,复制到生产并安装在那里.我现在所需要的 - 知道我的构建何时成功.

Ryn*_*ant 5

此函数将等待使用TFSBuild.exe给出的队列ID进行构建:

function Wait-QueuedBuild {
    param(
        $QueueID
    )

    [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Build.Client')
    [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Client')

    $uri = [URI]"http://server-name:8080/tfs/project-collection"
    $projectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($uri)
    $buildServer = $projectCollection.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
    $spec = $buildServer.CreateBuildQueueSpec('*','*')

    do {
        $build = $buildServer.QueryQueuedBuilds($spec).QueuedBuilds| where {$_.Id -eq $QueueID}
        sleep 1
    } while ($build)
}
Run Code Online (Sandbox Code Playgroud)

您可以获取TFSBuild.exe返回的ID,然后调用该函数.

$tfsBuild = .\TFSBuild start http://server-name:8080/tfs/project-collection project-name build-name priority:High /queue
Wait-QueuedBuild [regex]::Match($tfsBuild[-1],'Queue ID: (?<id>\d+)').Groups['id'].Value
Run Code Online (Sandbox Code Playgroud)