You need to enable JavaScript to run this app. TFS取消发布后新建发布报错无法创建Release制品目录解决方案问询
优惠活动
大模型
产品
解决方案
定价
更多

TFS取消发布后新建发布报错无法创建Release制品目录解决方案问询

问题根因

该场景的目录占用异常本质为:自托管代理接收到发布取消指令时,默认仅将当前任务标记为已取消,不会强制终止该任务派生的所有关联子进程。残留子进程会持续持有C:\agent_work\r3\a路径的文件句柄,后续新发布复用同一路径创建制品目录时,就会触发文件占用IO错误。当前述发布完整执行完毕、所有子进程正常退出释放句柄时,后续新发布可正常运行,与描述的触发场景完全匹配。

触发时的原始报错:

Failed to create Release artifact directory 'C:\agent_work\r3\a'. ---> System.IO.IOException: The process cannot access the file '\?\C:\agent_work\r3\a' because it is being used by another process.
TFS原生支持的自动解决机制

TFS从2019 Update 1版本开始,针对自托管代理的取消作业残留进程问题,内置了对应的配置能力,无需手动重启代理即可实现自动清理:

  • 开启代理取消作业的强制进程回收开关:打开代理安装目录下的.env配置文件,添加配置项AGENT_REMOVE_PROCESS_ON_CANCEL=true,保存后重启一次代理即可生效。配置开启后,代理接收到发布取消信号时,会强制终止该作业关联的所有子进程,完全释放被占用的工作目录文件句柄,后续新发布可直接正常复用工作路径。
  • 在发布流水线添加前置清理步骤:在流水线最前端(制品拉取步骤之前)插入PowerShell清理脚本,实现对工作目录残留占用的自动处理:强制删除未正常释放的作业文件夹、结束所有持有路径文件句柄的残留进程、重建后续步骤需要的制品目录。
  • 调整代理工作目录生成规则:将默认固定序号递增的工作目录模式,修改为每次作业生成带随机后缀的独立路径,从根源上避免取消作业的残留路径被新发布复用。
临时规避方法
  • 取消前序发布后,不要立刻发起新发布,等待30-60秒让残留子进程自然退出释放句柄,即可正常触发新发布。
  • 遇到已触发的目录占用报错时,无需重启整个代理,仅需在代理节点上定位到持有r3\a路径文件句柄的残留进程(通常是部署步骤残留的PowerShell进程、IIS进程、部署脚本派生的可执行程序)手动结束,即可恢复发布运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 20:15:08