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

调用Azure DevOps REST API取消运行流水线失败如何解决?

问题根因
  • 取消失败的核心原因是参数传值错误:你误将流水线定义ID(definition ID) 当做运行实例ID(buildId) 传入了API端点,二者作用完全不同:
    • definition ID是流水线静态配置的唯一标识,同一个流水线的所有运行共用同一个definition ID
    • buildId是单条流水线运行实例的唯一标识,取消操作必须指定具体某次运行的buildId,传入definition ID无法定位到要取消的运行任务
修正操作步骤
  1. 先获取目标运行的buildId:调用运行中流水线查询接口,筛选对应definition ID下的运行中实例ID:
    请求方法:GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?definitions={你的definition ID}&statusFilter=inProgress&api-version=6.0
    返回结果中value数组内对应运行实例的id字段即为所需的buildId
  2. 原代码未明确指定请求头的Content-Type为application/json也可能导致请求不被识别,建议直接使用requests的json参数自动处理序列化,修正后的示例代码如下:
import requests

# 替换为实际配置值
organization = "你的组织名"
project = "你的项目名"
target_build_id = "查询到的运行实例ID" # 此处填写获取到的buildId,不是definition ID
url_cancel = f"https://dev.azure.com/{organization}/{project}/_apis/build/builds/{target_build_id}?api-version=6.0"

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer 你的个人访问令牌(PAT)"
    # 注意:PAT需要具备构建(Build)权限集下的取消构建权限
}

data = {"status": "Cancelling"}
response = requests.patch(url_cancel, headers=headers, json=data)

# 可打印返回结果校验
print("请求状态码:", response.status_code)
print("返回内容:", response.text)
结果验证
  • 接口返回200状态码即代表请求成功,等待几秒后对应流水线运行实例就会被取消

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:27:04