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

Github Actions如何获取关联提交的全部标签?求方法与工具推荐

问题背景

我正尝试将一条Jenkins流水线迁移至Github Actions。该流水线通过CLI从特性分支部署,示例命令如下:

deploy --env develop --region us-west-2 --pkg service1 service2 service3

我的Github Actions工作流基于标签触发:

on:
  workflow_dispatch:
  push:
    tags:
      - 'us-west-2-[0-9]+.[0-9]+'

在Jenkins中,我可通过git tag --points-at ${env.GIT_COMMIT}查看所有关联标签。在Github Actions的YAML文件中我尝试了如下写法:

- run: echo "TAG_NAMES=$(git tag --points-at ${{ env.GIT_COMMIT }})" >> $GITHUB_ENV
- run: echo $TAG_NAMES

但预期返回所有服务的标签,实际仅返回1个。现请教两个问题:

  1. 在Github Actions工作流中,有没有更好的方法生成全部标签名称列表?
  2. 是否有现成的Github Action可实现此功能?

解决方案

1. 更可靠的标签列表生成方法

首先要解决的是Github Actions默认拉取深度不足的问题:actions/checkout默认只拉取最新1次提交,本地仓库没有完整标签信息,所以第一步要修改checkout步骤拉取全量历史:

- uses: actions/checkout@v4
  with:
    fetch-depth: 0  # 拉取所有提交和标签

然后处理标签列表写入环境变量的截断问题——直接用git tag输出写入时,换行符会被截断导致只保留第一个标签。可以用tr命令将换行转为空格/逗号,把标签列表转为单行:

- run: |
    TAG_LIST=$(git tag --points-at ${{ env.GITHUB_SHA }})
    echo "TAG_NAMES=$(echo "$TAG_LIST" | tr '\n' ' ')" >> $GITHUB_ENV
- run: echo "所有关联标签:$TAG_NAMES"

如果需要逗号分隔(方便后续脚本处理),可以调整为:

- run: |
    TAG_LIST=$(git tag --points-at ${{ env.GITHUB_SHA }})
    echo "TAG_NAMES=$(echo "$TAG_LIST" | tr '\n' ',' | sed 's/,$//')" >> $GITHUB_ENV

2. 现成的Github Action实现

方式一:用actions/github-script调用Github API

无需拉取全量仓库,直接通过API获取当前提交的关联标签,更高效:

- uses: actions/github-script@v7
  id: get-tags
  with:
    script: |
      const tags = await github.rest.repos.listTagsForCommit({
        owner: context.repo.owner,
        repo: context.repo.repo,
        commit_sha: context.sha
      });
      return tags.data.map(tag => tag.name).join(' ');
- run: echo "所有关联标签:${{ steps.get-tags.outputs.result }}"

方式二:使用专门的标签处理Action

rlespinasse/github-slug-action会自动将当前提交的所有标签用逗号分隔,存入GIT_TAGS环境变量:

- uses: rlespinasse/github-slug-action@v4
- run: echo "所有关联标签:${{ env.GIT_TAGS }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:55:20