为什么在MS Azure DevOps的CICD流水线中需要使用Build Agents?
Azure DevOps CICD代理相关问题解答
为什么CICD系统无法独立完成全部所需任务?
Azure DevOps服务端本身只负责流水线调度、版本管控、日志存储、结果统计这类核心管控逻辑,本身不承载实际任务执行资源,核心原因如下:
- 不同项目的构建/部署环境差异极大:部分项目需要.NET Framework编译环境、部分需要适配iOS构建的macOS环境、部分需要对接私有网络内的测试集群,服务端不可能预置所有用户需要的全量环境配置
- 资源隔离需求:不同企业/项目的代码、依赖、构建产物都属于涉密内容,不可能放在公共共享执行环境处理,避免数据泄露风险
- 资源弹性调度需求:不同团队的构建并发量差异极大,小团队可能每周仅跑几次构建,中大型团队可能一天要跑上百次,由用户自行管理执行资源可以按需调整,避免服务端资源被无限制占用
我是否必须搭建Build Agents?
是否需要自行搭建要结合实际使用场景判断:
- 若你的项目是开源项目,或是构建环境仅需要常用公共操作系统、公开依赖,没有私有网络资源访问需求,可以直接使用Azure DevOps提供的Microsoft托管代理,不需要自行搭建私有代理
- 如果你满足以下任意需求,才必须自行搭建私有Build Agents:
- 需要访问私有网络内的资源,比如私有NuGet源、内部测试服务器、私有镜像仓库等
- 构建环境有特殊自定义配置,微软托管代理未预置对应的依赖、SDK或工具链
- 对构建速度、并发数有更高要求,微软托管代理的免费配额/默认并发数无法满足使用需求
- 构建/部署过程涉及涉密数据,不允许在公共托管环境中执行
不使用自行搭建的Build Agents的主要常见弊端与风险
- 环境适配问题:微软托管代理的环境是公开预置的,每次运行都会重置,如果有特殊依赖需要每次构建都重新安装,会大幅增加构建耗时,部分特殊工具链甚至无法在托管代理中正常运行
- 私有资源访问受限:托管代理运行在微软的公共网络环境中,无法直接访问企业内部的私有资源,若要对接必须把内部资源暴露到公网,会带来极大的安全风险
- 资源配额受限:微软托管代理对公开项目和私有项目都有固定的免费并发额度,超出后需要额外付费,且并发上限、单任务最长运行时间都有固定限制,无法满足大规模团队的高频构建需求
- 数据安全风险:如果构建过程涉及未公开的代码、密钥、业务敏感数据,放在公共托管代理中运行存在数据泄露的可能性,不符合多数企业的等保合规要求
- 性能不稳定:托管代理的资源是共享的,高峰期可能出现排队、执行速度变慢的情况,无法保证构建/部署任务的稳定性和时效性
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

