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

如何通过API获取YAML创建的Pipeline的Demands配置?

问题解决:获取YAML创建的Azure DevOps流水线Demands配置

当使用UI创建流水线时,Build Definitions API会返回结构化的demands配置,但YAML创建的流水线不同——API仅返回YAML的原始文本,不会将其中的配置解析为结构化字段返回,所以你确实需要自行解析YAML内容来提取demands。

具体步骤:

  1. 调用Build Definitions API获取YAML原始内容
    调用接口后,在响应体的process.yaml字段中可以拿到流水线的完整YAML文本。
  2. 解析YAML文本提取demands
    使用任意YAML解析库(比如Python的PyYAML、Node.js的js-yaml)加载这段文本,然后遍历jobs节点,提取每个job下的pool.demands配置。

示例代码(Python):

import yaml
import requests

# 替换为你的组织、项目、流水线ID和Pat
org_url = "https://dev.azure.com/your-org"
project = "your-project"
definition_id = 123
pat = "your-pat-token"

# 获取流水线定义
response = requests.get(
    f"{org_url}/{project}/_apis/build/definitions/{definition_id}?api-version=6.0",
    auth=("", pat)
)
definition = response.json()

# 提取并解析YAML
yaml_content = definition["process"]["yaml"]
pipeline_config = yaml.safe_load(yaml_content)

# 遍历jobs提取demands
for job in pipeline_config.get("jobs", []):
    job_name = job.get("job", "unnamed-job")
    demands = job.get("pool", {}).get("demands", [])
    print(f"Job {job_name} demands: {demands}")

注意事项:

如果你的YAML中引用了外部模板(extends或template关键字),需要额外加载模板文件并合并解析,这会增加复杂度,需要递归处理模板的嵌套引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:30:39