Azure DevOps REST接口无法获取全部构建记录问题求助
解决Azure DevOps REST API无法获取过期构建记录的问题
核心原因
你使用的常规Build API(_apis/build/builds)仅能返回软删除的构建记录,而超过30天保留策略被自动清理的构建属于硬删除,这类数据不会被常规Build API收录。管道分析页面的数据来自Azure DevOps的Analytics Warehouse,所以能展示完整的历史运行记录。
解决方案
1. 切换到Azure DevOps Analytics API
直接调用Analytics API获取包含过期构建的完整历史数据,这也是管道分析页面使用的数据源:
GET https://analytics.dev.azure.com/{organization}/{project}/_odata/v3.0-preview/Builds ?$filter=BuildDefinitionId eq 14 and QueueTime ge 2022-09-01T00:00:00Z &$select=BuildId,BuildNumber,QueueTime,StartTime,FinishTime,Result,State,DeletedDate
- 该API默认保留180天的历史数据(可通过组织设置调整保留周期),包含所有已完成、已删除、已过期的构建记录。
- 支持OData查询语法,可按需筛选、排序和选择返回字段。
2. 明确常规Build API的局限性
deletedFilter=includeDeleted仅对手动软删除的构建生效,无法获取系统自动清理的过期构建。- 即便设置
maxBuildsPerDefinition=1000,常规Build API也不会返回硬删除的记录,分页(使用continuationToken)无法解决此问题。
3. 长期数据留存方案
如果需要保留超过Analytics Warehouse周期的构建数据,可:
- 在组织设置中调整Analytics Warehouse的数据保留周期(最长可设置为10年)。
- 定期将Analytics API的数据导出到外部存储(如Azure Blob Storage、SQL数据库)。
内容的提问来源于stack exchange,提问作者Cole Flohr
相关产品推荐
相关产品推荐

