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

Azure DevOps中作业无法并行执行问题求助

问题分析与解决方案

核心问题是VMSS生成的虚拟机未安装并注册Azure Pipelines代理,导致Azure DevOps代理池仅显示VMSS配置条目,无可用代理节点,进而无法并行执行作业。即使VMSS已扩容,DevOps无法识别这些虚拟机作为代理资源。

解决步骤

1. 为VMSS添加代理自动安装扩展

需要在VMSS配置中加入自定义脚本扩展,让虚拟机启动时自动下载、安装并注册Azure Pipelines代理到指定池。

修改后的VMSS脚本片段

在原脚本最后添加以下扩展配置:

# 添加自定义脚本扩展,自动安装Azure Pipelines代理
$agentInstallScript = @"
powershell -ExecutionPolicy Bypass -Command "& {
`$agentVersion = '2.220.2' # 替换为兼容的最新代理版本
`$agentPackageUrl = "https://vstsagentpackage.azureedge.net/agent/`$agentVersion/vsts-agent-win-x64-`$agentVersion.zip"
`$agentInstallDir = 'C:\AzPipelinesAgent'
New-Item -Path `$agentInstallDir -ItemType Directory -Force | Out-Null

# 下载并解压代理包
Invoke-WebRequest -Uri `$agentPackageUrl -OutFile "`$agentInstallDir\agent.zip" -UseBasicParsing
Expand-Archive -Path "`$agentInstallDir\agent.zip" -DestinationPath `$agentInstallDir -Force

# 注册代理到Azure DevOps
`$orgUrl = 'https://dev.azure.com/你的组织名'
`$poolName = '你的VMSS代理池名'
`$patToken = '你的PAT令牌' # 需具备Agent Pools读写权限

& `$agentInstallDir\config.cmd --unattended `
  --url `$orgUrl `
  --auth pat `
  --token `$patToken `
  --pool `$poolName `
  --agent `$env:COMPUTERNAME `
  --replace `
  --acceptTeeEula

# 设置代理为开机自启
& `$agentInstallDir\svc.cmd install
& `$agentInstallDir\svc.cmd start
}"
"@

$vmssConfig = $vmssConfig | Add-AzVmssExtension `
  -Publisher 'Microsoft.Compute' `
  -ExtensionType 'CustomScriptExtension' `
  -TypeHandlerVersion '1.10' `
  -Name 'InstallPipelinesAgent' `
  -Setting @{ "commandToExecute" = $agentInstallScript }

2. 确认代理池与作业配置

  • 并行额度限制:你的项目有2个并行作业额度,即使VMSS扩容到4台,最多也只能同时运行2个作业,需注意此限制。
  • 代理能力匹配:检查作业定义中的需求(如操作系统、工具版本)是否与VMSS虚拟机的能力一致,避免因不匹配导致作业无法分配。
  • 代理池设置:进入Azure DevOps代理池页面,确认最大并行作业数设置(每个代理默认支持1个作业,若需单代理多作业可调整)。

3. 验证与排查

  • 查看VMSS虚拟机的自定义脚本扩展日志(Azure门户→VMSS→虚拟机→扩展→InstallPipelinesAgent→日志),确认代理安装注册是否成功。
  • 刷新Azure DevOps代理池页面,若配置正确,会看到VMSS生成的虚拟机作为代理节点出现在池中。
  • 触发作业,检查是否按额度限制并行执行(最多2个作业同时运行)。

关键注意事项

  • PAT令牌需拥有Agent Pools (Read & manage)权限,建议通过Azure Key Vault安全存储,避免硬编码。
  • 代理版本需与Azure DevOps服务器版本兼容,可从官方渠道获取最新版本号。
  • 确保NSG允许虚拟机访问以下HTTPS端点:https://dev.azure.com、https://vstsagentpackage.azureedge.net。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:20:21