Jenkins cleanWs插件未按规则保留文件问题排查
Jenkins cleanWs 配置问题分析与解决
你的问题出在对cleanWs插件的匹配逻辑理解有误,以及规则配置方式不当:
问题根源
- INCLUDE规则的误用:你配置的
INCLUDE: "**/*"会匹配工作区内所有文件和目录,后续的EXCLUDE: "**/*.txt"仅能排除txt文件,但无法排除这些txt文件所在的目录。由于目录被INCLUDE规则选中且未被排除,cleanWs会删除这些目录,导致目录下的txt文件也被一并删除。 - 规则逻辑搞反:
cleanWs的默认行为就是清理工作区内的所有文件,不需要额外配置INCLUDE来指定“所有文件”。添加INCLUDE规则后,反而会将清理范围限定为匹配该规则的对象,再用EXCLUDE剔除部分,这种方式容易忽略目录的处理,导致预期外的删除。
正确配置
要实现“删除所有文件但保留.txt文件”的效果,只需直接配置EXCLUDE规则,无需添加INCLUDE:
cleanWs( patterns: [ [ pattern: "**/*.txt", type: "EXCLUDE" ] ] )
补充说明
如果你的场景需要更复杂的匹配(比如既要保留txt,又要保留特定目录),可以添加多个EXCLUDE规则:
cleanWs( patterns: [ [ pattern: "**/*.txt", type: "EXCLUDE" ], [ pattern: "docs/**/*", type: "EXCLUDE" ] ] )
内容的提问来源于stack exchange,提问作者Stefan Vallaster
相关产品推荐
相关产品推荐

