Azure DevOps发布显示停滞但Azure门户已完成的问题排查
以下是几种常见的原因及对应的排查方向:
Azure DevOps与Azure的状态同步延迟/中断
Azure DevOps的发布任务在部署完成后,需要接收Azure返回的状态回调来标记任务完成。如果两者之间的通信链路出现网络波动、区域延迟,或是Azure的状态通知服务临时故障,就会导致DevOps侧一直等待回调,而Azure门户已经本地标记部署完成。可以对比Azure活动日志里的部署完成时间和DevOps发布任务的停滞时间,看是否存在明显时间差;同时查看DevOps发布日志的最后阶段,确认是否卡在“等待Azure部署确认”的步骤。发布任务的自定义验证环节故障
如果你的发布流程里加了自定义的验证脚本(比如检查Web应用的健康端点、确认服务启动状态),可能是这个验证环节出了问题:比如脚本的超时时间设置不合理,或者健康检查的端点路径、逻辑和当前应用不匹配,导致验证一直通不过,DevOps任务停滞,但实际Azure侧已经完成了包的部署。去看发布任务里验证步骤的日志,就能发现是否有脚本报错或超时的情况。发布代理的资源/权限问题
运行发布任务的Azure DevOps代理机器如果CPU、内存耗尽,会导致无法处理后续的状态更新逻辑;或者代理使用的服务主体权限被修改,失去了读取Azure Web应用部署状态的权限(比如Microsoft.Web/sites/read权限),也会导致DevOps无法获取到部署完成的状态。可以检查代理机器的资源占用情况,同时确认服务主体的权限配置是否正常。发布历史记录过多导致元数据阻塞
如果这个发布管道积累了大量的旧历史记录,Azure DevOps在加载或处理部署状态的元数据时可能会出现阻塞,导致任务显示停滞,但实际部署已经完成。可以尝试清理一批旧的发布历史,然后重新触发发布测试。Azure Web应用的部署后钩子异常
要是你的Web应用配置了部署后脚本(比如postDeploymentActions),这个脚本如果执行超时、卡住或者出现死循环,Azure门户可能会直接标记部署完成,但Azure DevOps会等待这个钩子执行完成的信号,从而导致任务停滞。去Azure Web应用的部署日志里查看部署后脚本的执行情况,就能排查出问题。
内容的提问来源于stack exchange,提问作者invernomuto

