Azure DevOps发布失败:同一脚本后期提示文件不存在
问题分析与解决方案
核心结论
确实存在代理工作区文件被清理的可能性,结合你使用容器托管Azure DevOps代理的环境,主要原因和解决办法如下:
可能的原因
容器代理的工作区自动清理机制
容器化的Azure DevOps代理默认会对工作区进行生命周期管理,当作业运行时长超过代理内置的缓存保留阈值时,即使你延长了作业超时时间,代理仍可能自动清理克隆的仓库文件。此外,如果容器因资源占用过高触发重启,也会导致工作区文件丢失。长时步骤引发的工作区异常
那个耗时1.5小时的安装步骤可能占用大量磁盘资源,或意外修改了工作目录的权限/结构,导致后续脚本文件无法被识别(比如磁盘空间不足被系统回收,或权限变更导致无法访问)。
解决方案
方案一:重新同步仓库文件
在耗时1.5小时的安装步骤之后,添加一个checkout步骤重新拉取仓库内容,确保脚本文件存在:- checkout: self fetchDepth: 1 path: 's' # 与之前的工作区路径保持一致,对应你报错中的C:\azp\agent_work\6\s方案二:将脚本迁移至持久化目录
在作业初始化阶段,把需要反复调用的脚本复制到容器代理的持久化存储目录(需提前配置代理的持久化卷),后续步骤从该目录调用脚本:# 作业初始化步骤 Copy-Item -Path "$(System.DefaultWorkingDirectory)\scripts\start_stop-virtualmachine.ps1" -Destination "C:\persistent-scripts\" -Force后续调用脚本时使用路径
C:\persistent-scripts\start_stop-virtualmachine.ps1方案三:调整容器代理配置
- 检查容器代理的环境变量(如
AGENT_WORKSPACE_CLEANUP),确认是否启用了自动清理,若有则调整清理阈值或临时关闭该配置。 - 确认容器代理分配的磁盘空间足够,避免因磁盘满导致文件被系统自动清理。
- 检查容器代理的环境变量(如
内容的提问来源于stack exchange,提问作者Hanneke Debie
相关产品推荐
相关产品推荐

