Azure Devops Rest API-获取当前在代理程序池中排队的生成

时间:2019-01-15 21:11:17

标签: azure azure-devops azure-devops-rest-api

是否有一种方法可以从Azure DevOps rest API仅获取正在队列中等待特定池中的可用代理的生成?

我目前有一个端点,可以为我提供池中发生的所有作业请求:

https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolid}/jobrequests

我浏览了API文档,但找不到有关代理程序池的任何信息。

2 个答案:

答案 0 :(得分:1)

没有现成的API,但是我们可以使用常规API并过滤结果。

例如,我使用您提供的API,并在池中获得了所有构建,然后,我使用PowerShell过滤了结果,以仅获取等待可用代理的构建。

我怎么知道谁在等待?在JSON结果中,每个构建都有一些属性,如果构建开始在代理上运行,他将获得属性assignTime,因此我将搜索不包含该属性的构建。

#... Do the API call and get the repsone
$json = $repsone | ConvertFrom-Json

$json.value.ForEach
({
    if(!$_.assignTime)
    {
        Write-Host "Build waiting for an agent:"
        Write-Host Build Definition Name: $_.definition.name
        Write-Host Build Id: $_.owner.id
        Write-Host Queue Time $_.queueTime
        # You can print more details about the build
    }
})


# Printed on screen:
Build waiting for an agent:
Build Definition Name: GitSample-CI
Build Id: 59
Queue Time 2019-01-16T07:36:52.8666667Z

如果您不想迭代所有有意义的构建,可以通过以下方式检索等待的构建:

$waitingBuilds = $json.value | where {-not $_.assignTime} 
# Then print the details

答案 1 :(得分:0)

我需要同样的东西,但是我正在Linux上运行。在Linux中,@ shayki-abramczyk的等效答案是:

jobRequests=$(curl -u peterjgrainger:${{ YOUR_DEVOPS_TOKEN }} https://dev.azure.com/{your_org}/_apis/distributedtask/pools/{your_pool}/jobrequests?api-version=6.0)
queuedJobs=$(echo $jobRequests | jq '.value | map(select(has("assignTime") | not)) | length')
runningJobs=$(echo $jobRequests | jq '.value | map(select(.result == null)) | length')