Sceptre配置CodePipeline V2出现重复触发过滤器问题
解决CodePipeline V2 + Sceptre 多余触发器过滤器问题
问题核心在于CodePipeline V2的触发器默认行为:当你通过Sceptre配置Git触发器时,如果没有完整覆盖FilterCriteria的Filters数组,CodePipeline会自动添加一个默认的BRANCH类型过滤器(匹配所有分支*),这就是流水线总是触发的原因。手动删除后Sceptre同步时又会重建,因为你的配置没明确覆盖这个默认规则。
具体修复步骤:
- 完整定义FilterCriteria数组:不要拆分设置分支和文件路径规则,把它们放在同一个
Filters列表里,明确指定FilterType为INCLUDE,确保数组里只有你需要的规则,没有默认的全匹配项。 - 示例Sceptre YAML配置:
Triggers: - ProviderType: CodeStarSourceConnection GitConfiguration: SourceActionName: "SourceAction" BranchName: "main" FilterCriteria: Filters: # 仅匹配main分支 - Type: BRANCH Pattern: "main" FilterType: INCLUDE # 仅匹配infra目录下的文件修改 - Type: FILE_PATH Pattern: "infra/**/*" FilterType: INCLUDE - 关键注意点:必须显式定义整个
Filters数组,不能只使用BranchIncludes或FileIncludes这类简化参数——这些简化参数会和默认规则叠加,导致生成多个过滤器。
验证方法:
部署后去CodePipeline控制台查看触发器的过滤器,应该只有你定义的两个规则(分支+文件路径),没有额外的全匹配分支过滤器。此时只有修改infra/目录下的文件且在main分支时,才会触发流水线。
内容的提问来源于stack exchange,提问作者terrywb
相关产品推荐
相关产品推荐

