You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure DevOps REST API获取含手动与自动构建消息的构建列表

获取Azure DevOps所有构建的创建消息(含手动触发)

问题分析

你当前调用的builds列表接口默认返回的triggerInfo仅包含CI自动触发(如PR合并到master)的构建消息(ci.message),但手动触发的构建的自定义消息不会存储在triggerInfo中,而是在构建的属性字段里,默认接口不会返回这些字段,需要通过API扩展参数来获取。

解决方案

方案1:扩展列表请求的返回字段

修改原API请求,添加$expand=properties参数,让接口返回构建的属性集合,其中包含手动触发时的消息:

GET https://dev.azure.com/{my Org}/{my project}/_apis/build/builds?api-version=5.1&$expand=properties

返回的每个构建对象会新增properties字段,手动触发的构建的消息存储在properties['Microsoft.TeamFoundation.Build.ReasonMessage']中。

示例手动构建的返回片段:

"properties": {
    "Microsoft.TeamFoundation.Build.ReasonMessage": "手动触发:紧急修复生产环境问题",
    // 其他属性...
},
"triggerInfo": {},
"id": 5537,
"buildNumber": "sql-data-warehouse-20240229.2"

方案2:调用单个构建详情接口(适合需要完整构建信息的场景)

如果需要更详细的构建数据,可以针对每个构建ID调用详情接口,添加$expand=all参数获取所有字段:

GET https://dev.azure.com/{my Org}/{my project}/_apis/build/builds/{buildId}?api-version=5.1&$expand=all

在返回结果中,手动触发的消息可以直接通过reasonMessage字段获取,自动触发的消息仍可从triggerInfo.ci.message获取。

统一提取消息的逻辑

你可以通过以下逻辑统一提取所有构建的创建消息:

  • 若triggerInfo.ci.message存在(自动触发构建),则使用该值;
  • 若properties['Microsoft.TeamFoundation.Build.ReasonMessage']或reasonMessage存在(手动触发构建),则使用该值;
  • 若都不存在,可设置默认值(如"无自定义消息")。

验证说明

  • 自动触发构建:triggerInfo.ci.message依然保留PR合并等触发消息;
  • 手动触发构建:通过扩展字段可以获取用户触发时输入的自定义消息;
  • API版本5.1完全支持上述扩展参数,无需升级版本。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:20:07