Azure DevOps规模集代理池:如何预配时使用最新代理版本?
解决Azure DevOps VMSS代理池预配时直接使用最新代理版本的方法
1. 自定义VM镜像,预先植入最新代理
- 手动搭建一台基础VM,安装对应系统的Azure DevOps代理最新版本(比如你需要的2.213.2)
- 配置代理为自动启动的系统服务,确保能正常连接到你的Azure DevOps组织
- 将这台VM捕获为自定义镜像,替换VMSS原来的默认镜像
- 后续VMSS预配新VM时,会直接使用带最新代理的镜像,跳过后续升级步骤
2. 修改VMSS扩展配置,指定代理版本
- 进入VMSS的扩展设置,找到
Microsoft.VisualStudio.Services.Agent扩展 - 在扩展配置中添加
agentVersion参数,设置为目标最新版本号(如2.213.2) - 这样VMSS在预配VM时,会直接下载指定版本的代理,而非默认旧版本
3. 给VMSS加启动脚本,强制更新代理
- 如果暂时不想换镜像,可以给VMSS添加自定义脚本扩展,在VM启动后立即升级代理
- 举个Windows VM的PowerShell脚本示例:
(记得替换脚本里的组织URL、代理池名称和PAT令牌)$agentDir = "C:\agent" $targetVersion = "2.213.2" $orgUrl = "<你的Azure DevOps组织URL>" $poolName = "<代理池名称>" $patToken = "<你的PAT令牌>" # 清理旧代理 if (Test-Path $agentDir) { cd $agentDir .\config.cmd remove --unattended --auth PAT --token $patToken Remove-Item $agentDir -Recurse -Force } # 下载并安装指定版本代理 $zipUrl = "https://vstsagentpackage.azureedge.net/agent/$targetVersion/vsts-agent-win-x64-$targetVersion.zip" Invoke-WebRequest -Uri $zipUrl -OutFile "agent.zip" Expand-Archive -Path "agent.zip" -DestinationPath $agentDir cd $agentDir .\config.cmd --unattended --url $orgUrl --pool $poolName --agent $env:COMPUTERNAME --auth PAT --token $patToken --runAsService
4. 利用Azure DevOps托管代理的自定义镜像(适用托管池场景)
- 若使用Azure托管代理池,可以基于官方托管代理镜像,预先安装最新代理版本,再将这个自定义镜像用于VMSS预配
内容的提问来源于stack exchange,提问作者Techromancer
相关产品推荐
相关产品推荐

