如何使用 Azure DevOps API 列出已删除的构建定义?

问题描述 投票:0回答:1

Azure DevOps 支持恢复已删除的管道长达 30 天。您可以在 /_build/deleted 的 Web UI 中查看已删除的管道:

enter image description here

但是,我找不到任何方法来列出或以其他方式获取 API 中这些已删除管道的引用。它们不包含在 Definitions - ListPipelines - List 端点返回的结果中,并且我没有看到包含它们的选项。定义资源支持恢复操作,需要知道已删除定义的 ID,但我没有看到任何方法可以首先找到已删除定义的 ID。

如果我在浏览器中的 /_build/deleted 上使用这个技巧(添加未记录的查询字符串参数以获取浏览器端点以返回填充相应页面的 JSON),我可以在响应中看到我想要的数据,所以这就是可能是一个选项,但尝试以编程方式执行此操作很痛苦,因为它看起来个人访问令牌仅适用于 /_apis 端点。我已经通过使用从浏览器借用的不记名令牌使其工作,但我不想也经历以编程方式获取不记名令牌的麻烦。

azure-devops azure-pipelines azure-devops-services
1个回答
0
投票

有时,Web 界面具有比 REST API 中直接提供的 API 更高效的 API。我本来打算发布我的博客文章的链接,但看起来您已经将其包含在问题中。

您可以使用 PAT 令牌以编程方式通过

__rt=fps&__ver=2.0
查询参数调用这些端点,就像通常使用任何其他 REST API 一样。

$organization = "<YOUR-ORGANIZATION>"
$project      = "<YOUR-PROJECT>"
$accessToken  = "<YOUR-PAT>"

$uri = "https://dev.azure.com/$organization/$project/_build/deleted?__rt=fps&__ver=2.0"
$uri = [Uri]::EscapeUriString($uri)

$header = @{ 
   Authorization = "Basic {0}" -f [Convert]::ToBase64String([Text.Encoding]::ASCI.GetBytes(":$($accessToken)"))
}

$result = Invoke-RestMethod -Uri $uri -Headers $header -Method "GET"

上述方法有效,但您必须解析响应正文才能找到所需的数据元素。

如果您想使用 REST API,通常您会查询列表端点,然后查询每个管道(获取定义)以获取删除状态,但目前看来此数据并未通过 API 公开。

© www.soinside.com 2019 - 2024. All rights reserved.