Azure Pipelines中FTP-Upload的FilePatterns规则不生效问题排查
问题分析与解决
你的FtpUpload@2任务的filePatterns配置存在两个核心问题:
排除规则未覆盖目录本身
当前的!**/.git/**仅会排除.git目录下的所有文件和子目录,但不会排除.git目录本身。在preservePaths: true的配置下,FTP任务会保留本地目录结构,即使目录为空,也会在远程服务器创建对应的空目录。匹配逻辑的精确性不足
现有排除规则对深层子内容的过滤可能存在遗漏,导致部分本应被排除的文件仍被上传。
修正后的filePatterns配置
将排除规则修改为带末尾斜杠的形式,直接匹配整个目录及其所有子内容,确保完全过滤目标目录:
filePatterns: | ** !**/.git/ !**/.idea/ !**/blog/ !**/node_modules/
或者采用更严谨的写法(同时明确排除目录本身和其下所有内容):
filePatterns: | ** !**/.git !**/.git/** !**/.idea !**/.idea/** !**/blog !**/blog/** !**/node_modules !**/node_modules/**
额外注意点
- 当前
rootDirectory使用$(System.DefaultWorkingDirectory)的配置是正确的,所有匹配规则都会基于该目录展开。 - 若远程服务器已存在这些目标目录,可手动清理或在Pipeline中添加额外步骤执行远程目录清理(操作前请确认数据安全)。
内容的提问来源于stack exchange,提问作者MAESTRO_DE
相关产品推荐
相关产品推荐

