You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Workspace Cleanup Plugin使用问题:执行后文件未删除

Jenkins工作区清理不生效问题排查与解决

1. 修正文件匹配规则的逻辑错误

你的cleanWs配置中,patterns的规则逻辑完全搞反了:

  • 当设置type: 'INCLUDE'时,只有匹配该规则的文件会被删除,其余所有文件都会被保留。你当前只指定了删除.gitignore,所以工作区里的其他文件自然不会动。
  • 同时叠加的EXCLUDE规则在INCLUDE模式下毫无意义,因为此时只有被INCLUDE的文件才会被处理,排除规则根本没机会生效。

如果你的需求是保留.gitignore和.propsfile,删除其他所有文件及目录,正确的配置应该用EXCLUDE模式来指定要保留的文件:

post {
    always {
        cleanWs(cleanWhenNotBuilt: false, 
                deleteDirs: true,
                disableDeferredWipeout: true,
                notFailBuild: true,
                patterns: [[pattern: '.gitignore', type: 'EXCLUDE'],
                           [pattern: '.propsfile', type: 'EXCLUDE']])
    }
}

如果是要删除所有文件(包括.gitignore),只保留.propsfile,去掉.gitignore的EXCLUDE规则即可。

2. 验证插件版本兼容性

你使用的0.46版本(2021年发布)存在流水线场景下模式匹配的已知bug,建议:

  • 直接升级插件到最新稳定版(当前最新为0.48+),新版本修复了多个规则解析的问题
  • 若暂时无法升级,先移除patterns配置,测试基础清理是否生效:
post {
    always {
        cleanWs(cleanWhenNotBuilt: false, 
                deleteDirs: true,
                disableDeferredWipeout: true,
                notFailBuild: true)
    }
}

如果基础清理能正常删除工作区,再逐步添加patterns规则调试。

3. 检查权限与节点配置

  • 确认Jenkins节点的执行用户对该工作区目录有完整的读写删除权限,权限不足会导致文件看似未被删除
  • 检查Jenkins全局配置中是否存在强制保留工作区的策略,部分全局设置会覆盖流水线的cleanWs配置
  • 若使用容器化节点(比如Docker代理),确认工作区的挂载路径是否正确,清理操作是否作用在实际的挂载目录上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:42:41