【发布时间】:2018-04-27 16:16:30
【问题描述】:
我想使用 TFS 2015 REST API 来解决代理是否忙。 我试图从代理处获取请求,但似乎只列出了已完成的请求:
http://tfsserver:8080/tfs/_apis/distributedtask/pools/2/jobrequests?agentId=41
我查找了所有可能的 api 调用,但我无法弄清楚,我如何才能知道代理是否正在运行构建。
希望有人能帮帮我。
谢谢!
【问题讨论】:
我想使用 TFS 2015 REST API 来解决代理是否忙。 我试图从代理处获取请求,但似乎只列出了已完成的请求:
http://tfsserver:8080/tfs/_apis/distributedtask/pools/2/jobrequests?agentId=41
我查找了所有可能的 api 调用,但我无法弄清楚,我如何才能知道代理是否正在运行构建。
希望有人能帮帮我。
谢谢!
【问题讨论】:
只检查响应的latest Request(top first request),如果值中有"result"(如:"result": "succeeded")项,则代理处于空闲状态,否则很忙。
简而言之:
空闲:
"result": "succeeded", 或 "result": "abandoned", 或 "result": "succeededWithIssues",
忙:
无“结果”项
您可以使用下面的 PowerShell 脚本来识别,如果 Result 为空,则代理 busy:
$serverurl = "http://tfsserver:8080/tfs"
$poolid = "39"
$agentid = "147"
$baseUrl = "$serverurl/_apis/distributedtask/pools/$poolid/jobrequests?agentId=$agentid"
$response = (Invoke-RestMethod -Uri $baseUrl -Method Get -UseDefaultCredential).value
$requests = @()
foreach($request in $response){
$customObject = new-object PSObject -property @{
"RequestId" = $request.requestId
"Result" = $request.result
"AgentName" = $request.reservedAgent.name
"AgentVersion" = $request.reservedAgent.version
"AgentStatus" = $request.reservedAgent.status
"BuildDefinitionID" = $request.definition.id
"BuildDefinitionName" = $request.definition.name
"BuildID" = $request.owner.id
"BuildName" = $request.owner.name
}
$requests += $customObject
}
$requests | Select-Object -first 1 `
RequestId,
Result,
AgentName,
AgentVersion,
AgentStatus,
BuildDefinitionID,
BuildDefinitionName,
BuildID,
BuildName
其实最简单的方法是通过门户网站查看agnet状态:
管理项目(齿轮图标)--> 代理池 --> 选择特定的代理池和代理 --> 检查请求
【讨论】: