You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure DevOps REST API获取指定流水线发布版本列表失败求助

解决Azure DevOps REST API获取指定流水线发布版本的问题

我明白你现在的困扰——能拿到构建流水线的运行列表,但发布版本的API调用一直失败,核心问题是你没在请求中指定目标发布流水线的定义ID,导致API要么返回项目下所有发布(不符合你的需求),要么因缺少过滤条件触发了权限/请求格式问题。下面给你一步步的解决方案:

1. 先确认你的发布流水线的Definition ID

首先要区分开「构建流水线」和「发布流水线」:你能获取的“流水线运行列表”是构建流水线的结果,而发布版本对应的是发布定义(Release Definition)。你可以通过两种方式拿到它的ID:

  • 直接在ADO界面找:打开目标发布流水线的页面,URL里会带有definitionId=XXX,这个XXX就是你需要的ID;
  • 用API批量查询:如果不确定ID,可调用这个接口获取项目下所有发布定义,再筛选目标流水线:
    GET https://dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=7.1-preview.4
    

2. 正确的API调用地址

要获取指定发布流水线的所有版本,必须在请求中加上definitionId参数,完整的API端点如下:

GET https://dev.azure.com/{organization}/{project}/_apis/release/releases?definitionId={你的发布定义ID}&api-version=7.1-preview.8

注:api-version可以用稳定版(比如7.0)或者最新预览版,只要和官方文档版本匹配即可。

3. Postman中的认证配置

确保你在Postman里正确配置了认证,这是很多调用失败的常见原因:

  • 先生成一个具有Release Read权限的Personal Access Token(PAT);
  • 在请求Headers中添加:
    Authorization: Basic <base64编码的字符串>
    
    这里的base64字符串是把:你的PAT内容(注意前面的冒号)进行Base64编码后的结果。

4. 可选的过滤参数(按需使用)

如果需要缩小结果范围,可以添加这些参数优化返回结果:

  • $top=50:只返回最新的50条发布版本;
  • statusFilter=completed:只返回已完成的发布;
  • createdAfter=2024-01-01T00:00:00Z:返回指定时间之后创建的发布。
    示例带过滤的请求:
GET https://dev.azure.com/{org}/{proj}/_apis/release/releases?definitionId=123&$top=20&statusFilter=completed&api-version=7.1-preview.8

5. PowerBI中的使用方式

后续要在PowerBI中调用这个API,可以用Web.Contents函数,示例M代码:

let
    Source = Json.Document(Web.Contents("https://dev.azure.com/你的组织/你的项目/_apis/release/releases?definitionId=123&api-version=7.1-preview.8", [Headers=[Authorization="Basic 你的Base64编码PAT"]])),
    value = Source[value]
in
    value

value转换成数据表后,就能直接用于后续的报表分析了。

内容的提问来源于stack exchange,提问作者Nate

火山引擎 最新活动