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

如何检查代理运行Pipeline的能力及获取YAML Pipeline代理需求

代理与Pipeline需求匹配方案及YAML Pipeline需求获取方法

一、筛选适配指定Pipeline的代理/验证单代理兼容性

核心逻辑:代理的所有能力必须完全满足Pipeline的全部需求,具体操作步骤如下:

1. 获取代理池的能力数据

使用你提到的API拉取目标代理池内所有代理的详细能力信息:

https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/agents?includeCapabilities=true

返回结果中,每个代理的capabilities字段包含其所有系统/自定义能力(比如agent.os、自定义的python.version这类参数)。

2. 获取Pipeline的需求数据

手动创建的Pipeline

直接调用你已知的API获取需求:

https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}

需求存储在demands字段中,格式为一组条件语句(例如agent.os -equals Windows)。

YAML创建的Pipeline

YAML Pipeline的需求分两种场景,获取方式不同:

  • 显式定义的需求:即你在YAML代码中通过demands字段声明的规则,示例:
    pool:
      name: MyAgentPool
      demands:
      - agent.os -equals Linux
      - node.version -equals 18.x
    
    这类需求可直接通过上述构建定义API获取,返回结果的process.demands字段就是这些显式需求。
  • 隐式需求:由Pipeline内任务自动生成的需求(比如部分内置任务要求特定工具版本),这类需求不会出现在基础构建定义中,需给API添加扩展参数:
    https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?expand=demands
    
    添加expand=demands后,返回结果的effectiveDemands字段会包含显式+隐式的全部需求。

3. 执行匹配验证

拿到需求和代理能力后,逐一比对:

  • 带条件的需求(如node.version -equals 18.x):先确认代理存在对应的能力键,再检查值是否符合条件(等于、包含等)
  • 仅要求存在性的需求(如docker):只要代理能力中包含该键即满足要求

遍历代理池所有代理,筛选出满足全部需求的代理,就是适配该Pipeline的列表;单代理验证只需检查它是否满足该Pipeline的所有需求即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:30:59