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

Github Actions如何仅针对推送的最新标签触发工作流?

GitHub Action 多标签推送仅触发最新标签工作流方案

你原有的触发配置无需修改,只需要在作业中新增标签校验逻辑,即可实现单次推送多个标签时仅针对最新标签执行后续任务,完整配置示例如下:

on:
  push:
    tags:
      - '*'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 新增校验步骤:判断当前触发标签是否为本次推送的最新标签
      - name: 校验是否为最新触发标签
        id: check-latest-tag
        run: |
          # 获取本次推送所有关联的标签
          PUSHED_TAGS=$(git tag --contains ${{ github.sha }})
          # 按标签创建时间倒序排序,取第一个即为最新创建的标签
          LATEST_TAG=$(echo "$PUSHED_TAGS" | xargs -I {} git log -1 --format=%ct\ {} {} | sort -nr | head -n 1 | awk '{print $2}')
          # 当前工作流触发的标签
          CURRENT_TAG=${GITHUB_REF#refs/tags/}
          
          if [ "$CURRENT_TAG" != "$LATEST_TAG" ]; then
            echo "当前标签 $CURRENT_TAG 不是最新推送标签,终止工作流"
            exit 1
          fi
          echo "当前为最新标签 $LATEST_TAG,继续执行后续任务"

      # 后续你的原有业务步骤
      - name: 后续业务步骤
        run: echo "执行业务逻辑"

如果你使用语义化版本号作为标签(例如v1.2.3),想要取最高版本而非最新创建时间的标签,可以把上述步骤中LATEST_TAG的赋值逻辑替换为:

# 按语义化版本号倒序排序,取最高版本
LATEST_TAG=$(echo "$PUSHED_TAGS" | sort -rV | head -n 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:02