Azure DevOps Pipeline自托管代理部署作业长期卡在Pending状态如何解决
排查步骤
- 环境授权校验
你当前部署作业绑定了SERVER-DEV类型为VirtualMachine的环境,首先检查以下配置:- 进入Azure DevOps项目的「环境」-「SERVER-DEV」-「安全」页面,确认当前YAML流水线对应的构建服务账号已被授予「环境使用者」权限,若首次运行未处理授权请求,作业会直接卡在Pending状态
- 检查该环境下绑定的虚拟机资源是否处于在线状态,确认资源未被其他长时间运行的任务独占锁定
- 对比你正常运行的手动Release流水线使用的环境配置,确认是否和当前YAML的环境资源、权限配置完全一致
- 代理池匹配校验
- 确认部署阶段指定的自托管代理池,和你其他正常运行的Pipeline使用的是同一个池,检查代理池的安全设置,确认当前流水线的服务账号有「队列作业」权限
- 检查自托管代理的能力列表,确认没有未满足的隐性作业需求,可在部署作业配置中添加
demands: []显式清空需求,排除匹配问题
- 配置语法错误排查
你的配置存在两处未定义参数引用问题,可修改后重试:- 两处IIS管理任务中引用的
$(Parameters.WebsiteName)未在YAML中定义Parameters块,替换为已定义的$(DeploySite.WebsiteName) - MSBuild参数中的
"转义符替换为单引号',避免YAML解析异常导致作业无法调度
- 两处IIS管理任务中引用的
- 残留阻塞作业清理
卡在Pending状态2个月的作业会锁定对应环境/代理资源,需先强制删除:
安装Azure DevOps CLI后执行命令az pipelines runs delete --org <你的组织地址> --project <项目名> --run-id <卡住的运行ID>,清理完成后重新触发流水线 - 最小配置复现排查
临时把部署作业的environment配置块完全删除,改为普通作业执行简单的脚本任务,若可以正常运行则可以确认问题出在环境相关配置上,进一步缩小排查范围
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

