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

如何实现GitHub Actions在指定路径更新且推送标签时触发

解决GitHub Action同时满足标签推送和指定路径更新的触发问题

问题原因分析

你尝试的三种配置均未生效,核心问题如下:

  1. 直接配置tags+paths:GitHub Actions中push事件的tags条件优先级高于paths,只要触发标签推送,无论路径是否变更都会启动工作流,无法实现"且"逻辑。
  2. paths触发+标签判断:若推送标签时路径无变更,paths条件会直接阻止工作流启动,后续的标签判断步骤根本不会执行。
  3. tags触发+paths-filter:执行顺序错误(先判断路径再拉取代码),且未配置完整的提交比对参数,导致无法正确检测路径变更。

正确解决方案

方案一:使用dorny/paths-filter第三方Action

调整执行顺序,先拉取完整仓库历史,再检测路径变更:

name: ci
on:
  push:
    tags:
      - 'v*'

jobs:
  push-artifacts:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0  # 拉取完整历史,确保能比对提交差异

      - name: 检测dir1是否有变更
        id: filter
        uses: dorny/paths-filter@v3
        with:
          filters: |
            dir1_changed:
              - 'dir1/**'  # 匹配dir1下所有文件及子目录
          base: ${{ github.event.before }}  # 标签推送前的基准提交
          head: ${{ github.sha }}           # 标签指向的当前提交

      - name: 推送产物
        if: steps.filter.outputs.dir1_changed == 'true'
        run: |
          # 此处替换为你的推送逻辑
          echo "因dir1变更且推送了标签,开始推送产物"

方案二:使用Git命令原生判断(无需第三方Action)

直接通过Git命令比对提交差异,判断指定路径是否有变更:

name: ci
on:
  push:
    tags:
      - 'v*'

jobs:
  push-artifacts:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: 检查dir1变更
        id: check_dir1
        run: |
          # 比对当前提交与父提交的文件变更,检测是否包含dir1路径
          if git diff --name-only ${{ github.sha }}~1 ${{ github.sha }} | grep -q '^dir1/'; then
            echo "dir1_changed=true" >> $GITHUB_OUTPUT
          else
            echo "dir1_changed=false" >> $GITHUB_OUTPUT
          fi

      - name: 推送产物
        if: steps.check_dir1.outputs.dir1_changed == 'true'
        run: |
          # 此处替换为你的推送逻辑
          echo "开始推送产物"

关键注意事项

  • 必须设置fetch-depth: 0,否则仅拉取最新提交,无法比对历史变更;
  • 路径匹配使用dir1/**而非dir1,确保覆盖目录下所有子文件和子目录;
  • 若标签打在旧提交上,github.event.before和github.sha的比对能准确获取该提交的变更内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:03:11