分支策略排除YAML文件触发特定评审的正确配置方法
分支路径筛选排除规则失效解决方案
问题背景
- 共配置4条分支评审策略,当前仅1条可正常生效
- 正常生效策略配置:通过路径筛选器设置规则,当变更涉及
*.yml文件时,仅触发指定用户组的评审请求,配置截图如下:
实际测试修改YAML文件时,该策略触发逻辑正常。 - 待修复策略配置:为其余3条常规评审策略添加了路径筛选规则
!*.yml,预期效果为:当变更文件为YAML格式时,不自动添加其他常规评审组。 - 异常表现:添加该排除类筛选规则前,3条策略的自动添加评审人逻辑均可正常运行;添加规则后出现异常,即使仅修改非YAML文件,也无法自动添加对应的评审组。
- 核心疑问:
- 路径筛选语法中的
!是否仅支持对文件夹生效? - 如何正确配置规则排除YAML文件,避免触发特定评审人添加逻辑?
- 路径筛选语法中的
原因说明
!排除语法并非仅支持对文件夹生效,失效是两个配置错误共同导致的:
- 路径匹配范围错误:单独写
*.yml/!*.yml仅能匹配仓库根目录下的yml文件,无法命中所有子目录下的同格式文件 - 规则逻辑错误:几乎所有主流代码托管平台的路径筛选器都要求排除规则不能独立存在,必须先配置包含规则划定策略的生效范围,否则筛选器会判定无有效匹配路径,无论修改什么文件都不会触发策略。只配置
!*.yml的写法,本质是没有给这3条策略指定任何生效的文件范围,自然全场景都不会触发。
正确配置方法
给3条常规评审策略按顺序配置以下路径筛选规则即可:
- 第一条配置包含规则:
**/*,代表匹配仓库全路径下的所有文件 - 第二条配置排除规则:
!**/*.yml,代表排除所有目录下的.yml格式文件
注意规则顺序不能调换,路径筛选器按从上到下的顺序执行匹配,后置规则会覆盖前置规则的匹配结果。
如果仓库中存在.yaml后缀的YAML文件,可以额外新增一条排除规则!**/*.yaml,覆盖全部YAML格式文件。
配置完成后的触发逻辑符合预期:
- 提交仅包含
.yml/.yaml文件时,仅触发YAML专属评审组策略,3条常规评审策略不触发 - 提交仅包含非YAML格式文件时,3条常规评审策略正常触发,YAML专属评审组策略不触发
- 提交同时包含YAML和非YAML文件时,两类策略都会按规则触发对应评审请求
内容的提问来源于stack exchange,提问作者sr28
相关产品推荐
相关产品推荐

