GitHub Actions workflow触发规则不符合预期,**/abc**路径匹配异常问询
问题结论
该问题不属于GitHub Actions的Bug,是对其使用的glob路径匹配规则存在理解偏差导致的。
GitHub Actions的路径过滤功能基于minimatch库实现,默认开启globstar语法支持,我们先拆解你使用的**/abc**模式的匹配逻辑:
**/属于globstar语法,匹配任意深度的目录前缀(包含根目录下无前置目录的场景)- 你原本预期后续的
abc**仅匹配「单个路径段(文件名/目录名)以abc开头」的场景,但实际运行中存在三种常见的误触发原因:- 配置存在笔误:如果实际配置写的是
**/*abc*,该模式会匹配所有路径中任意位置包含abc字符的文件,自然会命中test_abc这类文件名中间带abc的文件,这是最常见的误触发原因 - 提交包含其他匹配文件:GitHub Actions只要同一次提交中有任意一个文件命中路径规则就会触发工作流,如果你修改
test_abc的同时也修改了其他符合**/abc**规则的文件,也会出现误判的表象 - 路径根目录包含
abc:如果你的本地仓库父目录路径中包含abc字符,完整路径提交时也会被规则命中
- 配置存在笔误:如果实际配置写的是
符合你预期的配置写法
如果你需要精确匹配两类场景:
- 存放在名称以
abc开头的文件夹下的任意文件(包含所有层级子目录) - 任意位置名称以
abc开头的文件
可以使用以下路径规则配置:
on: push: paths: - '**/abc*/**' - '**/abc*'
规则说明:
**/abc*/**:匹配任意深度下、名称以abc开头的目录下的所有文件(包含子目录内的所有文件)**/abc*:匹配任意深度下、名称以abc开头的独立文件,避免根目录下的abc开头文件被遗漏
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

