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

如何配置GitHub Actions仅在推送新文件时触发工作流运行

实现方案

GitHub Actions 原生的工作流触发配置项,没有直接提供「仅提交新文件时触发」的过滤能力,你列出的所有配置项都无法独立实现这个需求,各配置项的实际作用如下:

  • branches/branches-ignore:仅能按分支名称过滤触发事件,和文件变更类型完全无关,确实无效
  • tags/tags-ignore:仅针对标签推送事件做过滤,和普通代码提交、PR的文件变更逻辑无关,无法实现需求
  • paths/paths-ignore:仅能匹配变更文件的路径名,无法区分文件是新增、修改还是删除状态,哪怕使用通配符也识别不了变更类型,不能直接用来实现需求
  • types:push事件的types没有可自定义的扩展值,仅支持默认的推送触发;pull_request事件的types仅针对PR本身的状态(如创建、更新、编辑等)做过滤,无法识别提交内的文件变更类型,同样无效

可行实现方式

你可以先正常配置工作流触发规则,在工作流执行的第一步做变更检测,如果本次提交/PR没有新增文件就直接终止流程,存在新增文件时再执行后续任务,这种方案不需要枚举项目现有文件,不受目录结构变动影响。

完整配置示例:

name: Another_Action
on:
  push:
  pull_request:

jobs:
  new-file-trigger:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 # 拉取足够的提交历史用于对比,PR场景下需要拉取目标分支记录

      - name: 检测新增文件
        id: check_added
        run: |
          if [[ "${{ github.event_name }}" == "push" ]]; then
            # push事件:对比当前提交和上一个提交的差异
            added_files=$(git diff --name-only --diff-filter=A HEAD^ HEAD)
          elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
            # PR事件:对比当前分支和PR目标分支的差异
            git fetch origin ${{ github.base_ref }}
            added_files=$(git diff --name-only --diff-filter=A origin/${{ github.base_ref }} HEAD)
          fi

          if [[ -z "$added_files" ]]; then
            echo "has_added=false" >> $GITHUB_OUTPUT
            echo "未检测到新增文件,终止工作流"
            exit 0
          else
            echo "has_added=true" >> $GITHUB_OUTPUT
            echo "检测到新增文件列表:"
            echo "$added_files"
          fi

      - name: 你的自定义任务
        if: steps.check_added.outputs.has_added == 'true'
        run: |
          # 此处填写需要在新增文件时执行的业务逻辑
          echo "开始执行新增文件触发的任务"

核心逻辑说明

  • git diff的--diff-filter=A参数会专门筛选状态为「新增(Added)」的文件,如果你需要同时匹配其他变更类型,可以追加对应标识:比如--diff-filter=AM代表同时匹配新增和修改的文件
  • 配置fetch-depth是为了拉取足够的git提交记录,默认checkout动作只会拉取单次提交的内容,没有历史记录无法完成差异对比
  • 检测逻辑会自动适配push和PR两种触发场景,不需要手动维护路径规则,项目结构变动也不会影响检测结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:24:30