如何调用Azure DevOps REST API按日期筛选成功部署记录
Azure DevOps 部署记录API日期筛选实现方案
问题背景
调用Azure DevOps Release部署列表API查询指定Pipeline的成功部署记录时,无法获取特定日期区间、或特定日期之前的部署数据。原测试调用使用createdOn=2022-10-06作为筛选参数,未返回预期结果。
错误原因
- 该接口未定义
createdOn作为查询参数,传入后会被服务端直接忽略,无法起到筛选作用 - 原调用缺失强制必填的
api-version参数,可能导致接口返回非预期版本的结果 - 未指定部署状态参数,会默认返回所有状态(进行中、失败、成功等)的部署记录
正确筛选方案
该接口原生支持两个时间维度的查询参数,基于部署记录的最后修改时间(和部署创建时间偏差极小,可满足绝大多数日期筛选场景)做范围匹配:
minModifiedTime:筛选修改时间大于等于该值的记录,对应UTC时区ISO 8601格式时间字符串maxModifiedTime:筛选修改时间小于等于该值的记录,对应UTC时区ISO 8601格式时间字符串
配合其他筛选参数,可覆盖不同查询场景:
场景1:查询特定日期之前的成功部署记录
仅需传入maxModifiedTime为目标日期的UTC当日最后一刻时间,同时指定deploymentStatus=succeeded过滤成功状态、补上api-version=6.0参数,示例调用:
https://vsrm.dev.azure.com/ABC/DEF/_apis/release/deployments?definitionId=111&sourceBranch=master&deploymentStatus=succeeded&maxModifiedTime=2022-10-06T23:59:59.999Z&api-version=6.0
场景2:查询特定日期区间内的成功部署记录
同时传入minModifiedTime(区间起始UTC零点时间)和maxModifiedTime(区间结束UTC最后一刻时间)即可,示例查询2022-10-01至2022-10-06的记录:
https://vsrm.dev.azure.com/ABC/DEF/_apis/release/deployments?definitionId=111&sourceBranch=master&deploymentStatus=succeeded&minModifiedTime=2022-10-01T00:00:00.000Z&maxModifiedTime=2022-10-06T23:59:59.999Z&api-version=6.0
补充说明
若需要100%按部署创建时间精准匹配,可在接口返回结果后,本地遍历记录对
createdOn字段做二次过滤,消除modifiedTime和createdOn的极个别偏差。注意所有传入接口的时间值必须转换为UTC时区,不要直接使用本地时区时间,避免时区偏移导致筛选结果错误。
内容的提问来源于stack exchange,提问作者Hanamant
相关产品推荐
相关产品推荐

