如何确定使用Azure DevOps REST Api运行构建任务的物理计算机?

时间:2019-10-17 15:39:30

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

我们有一个内部部署的Azure DevOps2019。我需要知道什么版本在什么机器上运行,而不是在代理上运行。

动机::当构建速度很慢时,我想知道在特定物理机器(可以是虚拟机)上运行的构建是什么,但为此我将它们称为物理区别于代理商)。这可以帮助我们确定某些构建是否应该在同一台计算机上运行。

给出一个构建对象,我可以从构建任务中提取工作者名称:

C:\> (Invoke-RestMethod $Build._links.timeline.href -UseDefaultCredentials).records.workerName |? { $_ } | sort -unique
TDC5DFC1BLD10_02
C:\>

因此,我知道构建中的所有任务都在构建代理TDC5DFC1BLD10_02上运行。但是我想知道物理机名称。因此,我使用代理名称查询代理:

C:\> (Invoke-RestMethod "$TfsInstanceUrl/_apis/distributedtask/pools/$($build.queue.pool.id)/agents?agentName=TDC5DFC1BLD10_02" -UseDefaultCredentials).value


_links            : @{self=; web=}
maxParallelism    : 1
createdOn         : 2019-05-16T19:33:31.567Z
authorization     : @{clientId=c4cebb22-e14f-4fdb-844c-079150766efc; publicKey=}
id                : 308
name              : TDC5DFC1BLD10_02
version           : 2.131.0
osDescription     : Microsoft Windows 10.0.14393
enabled           : True
status            : online
provisioningState : Provisioned



C:\>

但是它不能给我物理机。我不知道什么是队列或池,但是我也可以检查它们:

C:\> $Build.queue | ConvertTo-Json
{
    "id":  1929,
    "name":  "GC-Master-TDC5DFC1BLD08-11",
    "pool":  {
                 "id":  90,
                 "name":  "GC-Master-TDC5DFC1BLD08-11"
             }
}
C:\> Invoke-RestMethod "$TfsInstanceUrl/SharpTop/_apis/distributedtask/queues/1929" -UseDefaultCredentials | ConvertTo-Json
{
    "id":  1929,
    "projectId":  "ecff38d6-a219-4739-8b97-5e5d8d00e7ed",
    "name":  "GC-Master-TDC5DFC1BLD08-11",
    "pool":  {
                 "id":  90,
                 "scope":  "a984b12d-89d2-47d6-998e-b9bfaa69ee85",
                 "name":  "GC-Master-TDC5DFC1BLD08-11",
                 "isHosted":  false,
                 "poolType":  "automation",
                 "size":  8
             }
}
C:\> Invoke-RestMethod "$TfsInstanceUrl/_apis/distributedtask/pools/90" -UseDefaultCredentials


createdOn     : 2019-05-16T19:13:33.493Z
autoProvision : True
autoSize      :
agentCloudId  :
createdBy     : @{displayName=Doe, John;
                url=http://tdc1tfsapp01.xyz.com:8080/tfs/_apis/Identities/cc71b5eb-9dd6-436a-b722-6790d7ef4877; _links=;
                id=cc71b5eb-9dd6-436a-b722-6790d7ef4877; uniqueName=xyz\P120A76; imageUrl=http://tdc1tfsapp01.xyz.com:8080/t
                fs/_api/_common/identityImage?id=cc71b5eb-9dd6-436a-b722-6790d7ef4877;
                descriptor=win.Uy0xLTUtMjEtNDg3MjU1NDc3LTE2MzE1MjcwMjItMzUxNzQ0NDQyLTE1NzQy}
owner         : @{displayName=Doe, John;
                url=http://tdc1tfsapp01.xyz.com:8080/tfs/_apis/Identities/cc71b5eb-9dd6-436a-b722-6790d7ef4877; _links=;
                id=cc71b5eb-9dd6-436a-b722-6790d7ef4877; uniqueName=xyz\P120A76; imageUrl=http://tdc1tfsapp01.xyz.com:8080/t
                fs/_api/_common/identityImage?id=cc71b5eb-9dd6-436a-b722-6790d7ef4877;
                descriptor=win.Uy0xLTUtMjEtNDg3MjU1NDc3LTE2MzE1MjcwMjItMzUxNzQ0NDQyLTE1NzQy}
id            : 90
scope         : a984b12d-89d2-47d6-998e-b9bfaa69ee85
name          : GC-Master-TDC5DFC1BLD08-11
isHosted      : False
poolType      : automation
size          : 8

我仍然对物理机一无所知。我该怎么办?

1 个答案:

答案 0 :(得分:0)

Agent.ComputerName保存执行作业的代理的主机名的值。