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

如何仅在添加指定文件时触发GitHub Actions工作流?

仅在添加指定文件时触发GitHub Actions工作流

仅靠paths配置无法区分文件是新增、修改还是删除,但可以结合工作流内的步骤判断变更类型,实现仅在添加file_name时执行后续操作。

实现步骤

  1. 先通过paths过滤,只让涉及file_name的推送触发工作流,避免无意义的运行:
on:
  push:
    paths:
      - 'file_name'
  1. 在工作流任务中,添加判断逻辑确认文件是否为新增:
    • 拉取完整代码历史,才能对比前后提交的文件变化;
    • 用git diff命令识别文件的变更状态,仅当状态为A(新增)时执行后续步骤。

完整工作流示例

on:
  push:
    paths:
      - 'file_name'

jobs:
  run-on-file-add:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码(含完整历史)
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: 检测文件是否为新增
        id: check_addition
        run: |
          # 对比当前提交与上一提交的文件变更,筛选新增的file_name
          if git diff --name-status HEAD^ HEAD | grep -q "^A.*file_name"; then
            echo "is_added=true" >> $GITHUB_OUTPUT
          else
            echo "is_added=false" >> $GITHUB_OUTPUT
          fi

      - name: 仅在文件新增时执行的操作
        if: steps.check_addition.outputs.is_added == 'true'
        run: |
          echo "已检测到file_name新增,开始执行任务..."
          # 在这里添加你的具体操作命令

关键说明

  • fetch-depth: 0:默认GitHub Actions仅拉取最新提交,设置此参数才能获取完整提交历史,用于对比文件变更。
  • git diff --name-status:输出格式为「变更状态 文件名」,其中A代表新增,M代表修改,D代表删除。
  • 通过输出变量is_added控制后续步骤是否执行,实现仅新增时触发的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:49:53