如何让VSTS本地代理每次使用相同的工作目录?
如何让VSTS本地代理固定使用同一工作目录
我之前也处理过类似的大仓库场景,VSTS(现在叫Azure DevOps Server)本地代理默认的工作目录轮转机制,确实会给大仓库用户带来重复下载的麻烦——它默认会为每个新作业创建编号递增的工作目录(比如C:\agent_work\1、C:\agent_work\2),目的是隔离不同作业的环境,但对20GB的仓库来说完全是灾难。
下面给你两种可靠的解决方法:
方法1:全局配置代理,固定工作目录
这个方法会让该代理的所有作业都使用同一个固定目录,一劳永逸:
- 如果是首次配置代理:运行
config.cmd(Windows)或config.sh(Linux)时,加上--work参数指定固定路径,比如:config.cmd --work C:\agent_work\fixed_repo - 如果代理已经配置完成:找到代理安装目录下的
.agentJSON文件,修改workFolder字段为你想要的固定路径,比如:"workFolder": "C:\\agent_work\\fixed_repo"
修改后重启代理服务即可(Windows在服务列表找到Azure Pipelines Agent重启,Linux用./svc.sh restart)。
方法2:针对单个构建管道指定工作目录
如果不想全局修改,只想给这个大仓库的管道单独设置:
- 打开构建管道编辑页面
- 点击代理作业名称旁的齿轮图标,进入作业设置
- 在「工作目录」选项中输入固定路径,比如
$(Agent.RootDirectory)\fixed_repo(Windows)或$(Agent.RootDirectory)/fixed_repo(Linux) - 保存管道,下次运行就会锁定这个目录了
关键注意事项
- 一定要保留你之前设置的「Get Sources」任务的不清理配置,这样代理才会复用已有的仓库文件,不会重新克隆整个20GB内容
- 如果多个管道共用同一个代理和固定目录,要确保它们的仓库不会相互冲突,或者给每个管道分配单独的固定目录
- 确认代理服务账号对固定工作目录有足够的读写权限
内容的提问来源于stack exchange,提问作者user1142433
相关产品推荐
相关产品推荐

