You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅在特定目录变更时触发Pipeline运行?

当然可行!按目录变更触发Pipeline的实现方案

完全没问题,几乎所有主流CI/CD工具都支持基于文件路径的变更过滤,只在特定目录有修改时才触发Pipeline运行。下面给你几个常用工具的具体配置示例:

GitHub Actions

在你的Workflow配置文件(.github/workflows/*.yaml)里,通过paths关键字指定需要触发的目录:

name: 指定目录变更触发构建
on:
  push:
    paths:
      - 'src/**'          # 匹配src目录下所有文件(包括子目录)
      - 'docs/api/**'     # 可以同时指定多个目录
    # 也可以用paths-ignore排除不需要触发的目录
    # paths-ignore:
    #   - 'tests/**'

只要推送的变更里包含上述指定目录的文件,Pipeline就会触发;如果修改的都是其他目录的文件,Workflow会直接跳过。

GitLab CI

在.gitlab-ci.yml中使用rules结合changes关键字来控制job的运行条件:

stages:
  - build

build_project:
  stage: build
  script:
    - echo "执行构建脚本..."
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'
      changes:
        - src/**/*
        - config/*.json
      when: always

这里的规则表示:只有当push操作中包含src下所有文件或config目录下的json文件变更时,这个build job才会执行。如果所有job都配置了类似规则,整个Pipeline只会在符合条件的变更时触发。

Jenkins

Jenkins可以通过内置的changeset条件,或者借助Path Filter插件来实现:

内置方式(Jenkinsfile)

pipeline {
  agent any
  stages {
    stage('Build') {
      when {
        changeset pattern: 'src/**', comparator: 'REGEXP'
      }
      steps {
        echo '开始项目构建...'
      }
    }
  }
}

插件方式(Path Filter Plugin)

安装插件后,在Pipeline触发器的设置中添加路径匹配规则,仅当变更文件匹配指定目录时才触发构建。

额外注意点

  • 路径匹配语法要注意:**表示递归匹配所有子目录,*表示匹配当前目录下的所有文件
  • 测试配置时,可以特意修改指定目录外的文件,推送后观察是否不会触发Pipeline,验证配置是否生效
  • 部分工具对分支、标签的触发可能有额外配置,但核心的路径过滤逻辑是通用的

内容的提问来源于stack exchange,提问作者hasrthur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:43:08