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

如何让GitHub Action仅在指定文件夹触发运行?(单体仓库场景)

实现Monorepo中服务独立触发GitHub Actions工作流

你可以通过GitHub Actions的**路径过滤(Path Filters)**特性,让每个服务的工作流仅在对应服务目录下的文件发生变更时触发。以下是针对你的仓库结构的具体实现方案:

1. 为service1配置独立触发规则

编辑.github/workflows/service1.yaml,在on字段中添加路径过滤规则,指定仅当services/service1/下的文件变更时触发该工作流:

name: Service1 CI/CD

# 触发条件:push或PR时,仅service1目录下的文件变更才运行
on:
  push:
    paths:
      - 'services/service1/**'
  pull_request:
    paths:
      - 'services/service1/**'

jobs:
  build-deploy-service1:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      # 这里添加你的service1构建、测试、部署步骤
      - name: Build Service1
        run: |
          cd services/service1
          # 替换成你的实际构建命令,比如npm install && npm run build

2. 为service2配置独立触发规则

同理,编辑.github/workflows/service2.yaml,指定仅services/service2/路径下的变更触发:

name: Service2 CI/CD

on:
  push:
    paths:
      - 'services/service2/**'
  pull_request:
    paths:
      - 'services/service2/**'

jobs:
  build-deploy-service2:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Service2
        run: |
          cd services/service2
          # 替换成你的实际构建命令

关键说明

  • **是通配符,表示匹配指定目录下的所有文件和子目录
  • 如果需要排除某些文件,可以用!前缀,比如- '!services/service1/docs/**'(表示除了docs目录外的变更才触发)
  • 路径匹配是基于仓库根目录的相对路径,要和你的实际目录结构完全对应
  • 如果你需要在合并到主分支时才触发部署,可以在on.push.branches里再指定分支,比如branches: [main],结合路径过滤实现更精确的触发逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:35:30