如何通过ReST API使用Azure Devops部署池

时间:2020-10-16 17:30:34

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

[https://docs.microsoft.com/zh-cn/rest/api/azure/devops/distributedtask/pools/get%20agent%20pools?view=azure-devops-rest-6.0]

以上文档指示应包括部署池。不幸的是,它们没有返回(尽管所有的“自动化”池都返回了。

那么一个人如何以编程方式列出,获取(按ID)并创建/更新这些池??

enter image description here

更新......

在查看/ _settings / deploymentpools?view = pool时捕获网络跟踪

透露有一个_apis / distributedtask / deploymentPools的ReST调用

显示正确的信息。但是,继续搜索docs.microsoft.com不会提供有关此剩余调用的任何信息。

更新2:建议对Matt进行调用时返回(已清理)的JSON:

enter image description here

来自_apis / distributedtask / deploymentPools / deploymentPoolsSummary?expands = 2&api-version = 6.1-preview.1的JSON

enter image description here

可以看出,两者并不相同,到目前为止,只有从UI反向工程的呼叫才能显示相同的信息集(包括2个与在线和离线计数相关的必填字段)

2 个答案:

答案 0 :(得分:1)

给出以下示例池配置:

enter image description here

在使用Pool API且不使用此脚本的任何过滤器时:

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$uri = "https://dev.azure.com/{organization}/_apis/distributedtask/pools?api-version=6.0"

Invoke-RestMethod -Method Get -Uri $uri -Headers $AzureDevOpsAuthenicationHeader | 
    Select-Object -ExpandProperty value | 
    Select-Object name, poolType

返回:

name                            poolType  
----                            --------  
Default                         automation
Hosted                          automation
Hosted VS2017                   automation
Hosted Windows Container        automation
Hosted macOS                    automation
Hosted Ubuntu 1604              automation
Hosted Windows 2019 with VS2019 automation
Hosted macOS High Sierra        automation
Azure Pipelines                 automation

似乎没有过滤器的默认设置为您建议的自动化poolType添加了一个隐式过滤器。尽管我认为可以添加一个针对部署池的过滤器,但您会得到预期的结果:

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$uri = "https://dev.azure.com/{organization}/_apis/distributedtask/pools?api-version=6.0&poolType=deployment"

Invoke-RestMethod -Method Get -Uri $uri -Headers $AzureDevOpsAuthenicationHeader | 
    Select-Object -ExpandProperty value | 
    Select-Object name, poolType

返回:

name        poolType  
----        --------  
ExamplePool deployment

答案 1 :(得分:1)

包括2个与在线和离线计数相关的必填字段

我们可以使用Rest API列出部署池,通过字段onlineAgentsCountofflineAgentsCount获取部署状态,并获取pool ID

API:

https://dev.azure.com/{Org name}/_apis/distributedtask/deploymentPools/deploymentPoolsSummary?expands=2

结果:

enter image description here

并通过此API获取部署池详细信息或更新部署池

API:

https://dev.azure.com/{Org name}/_apis/distributedtask/pools?poolIds={pool ID}&api-version=6.0

更新1

Microsoft文档未列出所有REST API,但是我们可以通过F12或Fiddler捕获这些API。此外,您也可以尝试使用此API,它还会显示部署池信息。

此外,您可以向user voice提出新的建议票,Microsoft Azure DevOps团队将对其进行检查。