Azure Linux代理为何会拾取vmImage为macos-10.14的作业?
现象产生原因
当你在pool配置中显式指定了自托管代理池的name字段时,Azure Pipelines 会直接忽略同层级的vmImage配置,仅按照demands字段的要求匹配代理池内的可用代理。
你给出的配置中已经明确指定池名称为你自建的Default自托管池,此时vmImage: 'macos-10.14'的配置不会生效,系统仅校验代理是否满足npm的能力要求,你的Linux代理符合该要求,因此会被调度执行作业。
vmImage 属性的实际作用
vmImage是专为微软官方托管代理池设计的配置项,作用是指定托管代理所使用的操作系统镜像版本。只有符合以下两种场景时,vmImage配置才会生效:
- 未显式指定
pool.name,使用默认的微软托管代理池 pool.name指定为微软官方提供的托管代理池名称(如默认的Azure Pipelines池)
自托管代理池场景下,vmImage无任何调度筛选作用。
配置修正建议
如果你需要限制自托管代理的操作系统类型,可将系统内置的代理能力加入demands配置实现筛选,示例:
pool: name: Default demands: - npm # 仅允许 macOS 代理拾取作业 - Agent.OS -equals Darwin
其他可选的系统能力包括Agent.OSVersion、Agent.Architecture等,可根据实际需求配置。
内容的提问来源于stack exchange,提问作者minhtuanta
相关产品推荐
相关产品推荐

