如何通过Azure DevOps REST API区分不同分支的构建?
如何通过Azure DevOps REST API区分不同发布分支的构建?
我正在使用Azure DevOps REST API从指定分支下载最新流水线构建产物,操作步骤如下:
- 通过
definitionsGET接口(按流水线名称过滤结果)获取构建定义ID - 随后使用
buildsGET接口获取该构建定义下的最新成功构建
遇到的问题:底层流水线会针对源代码仓库中的不同分支执行。在DevOps网页UI中,某次流水线运行的源信息里,第一个仓库/分支是存放流水线YAML的固定位置,第二个才是我关注的、表示构建所属发布分支的信息。但从builds接口返回的Build数据结构中,repository和sourceBranch属性仅包含UI中第一个仓库/分支的信息,无法直接找到目标发布分支。
解决方法
1. 扩展builds接口的返回字段
调用builds接口时,添加$expand=repositoryResources参数,这样返回的Build对象会包含repositoryResources数组,其中列出了该构建关联的所有仓库资源,包括你需要的第二个发布分支对应的仓库和分支信息。
2. 解析repositoryResources数组
repositoryResources中的每个元素包含关键属性:
repositoryId: 关联仓库的IDrefName: 分支的完整名称(格式示例:refs/heads/release-v2.1)type: 资源类型(通常为Git)
你可以根据流水线的配置规则(比如目标仓库ID固定、分支命名符合特定格式)筛选出对应的发布分支信息。
3. 示例请求
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={definitionId}&statusFilter=succeeded&top=1&$expand=repositoryResources&api-version=7.1
4. 备选方案:提取自定义变量
如果流水线在运行时将发布分支信息存入了自定义变量(例如releaseBranch),可以在调用builds接口时添加$expand=variables参数,从返回的variables集合中提取目标分支的值。
内容的提问来源于stack exchange,提问作者F-H
相关产品推荐
相关产品推荐

