为什么Java会删除Jenkins P4插件创建的工作区及相关文件?
排查Java进程触发工作区删除的操作步骤
- 排查Jenkins任务配置:逐一核对所有Jenkins任务的构建规则,重点检查源码管理模块的自动清理选项、构建后操作中的工作区清理配置、多分支流水线/组织文件夹的旧工作区老化清理规则,确认是否有规则匹配到当前被删除的工作区路径。
- 开启Jenkins专项日志:在Jenkins系统日志配置页新增日志记录器,监控
java.io.File类的删除操作、Workspace Cleanup等工作区管理相关插件的日志输出,开启debug级别后,删除操作触发时可以直接捕获到对应的调用栈,定位触发逻辑所属的模块。 - 系统层面关联调用栈:
- Linux环境可使用
inotifywait监控目标工作区目录的删除事件,触发时立即执行jstack导出Jenkins对应Java进程的线程栈,定位执行删除的代码路径 - Windows环境可使用Process Monitor工具筛选对应Java进程的文件删除操作,查看操作触发时的线程调用栈
- Mac环境可使用
fs_usage监控文件系统操作,匹配到删除事件时导出Java进程的线程栈
- Linux环境可使用
- 排查插件冲突:先禁用所有非核心插件,逐批启用并验证删除问题是否复现,定位是否由存在BUG的第三方插件触发意外删除。
- 检查Jenkins系统级清理规则:确认是否配置了节点磁盘阈值清理、全局定时工作区清理等系统级规则,这类规则会在满足条件时自动清理节点上的闲置工作区。
内容的提问来源于stack exchange,提问作者diagramd 2020
相关产品推荐
相关产品推荐

