【问题标题】:How to read tag name using workflow_run如何使用 workflow_run 读取标签名称
【发布时间】:2021-04-11 10:19:27
【问题描述】:

我将 Github 操作用于两个工作流程:CI 和 CD。 CI 工作流程针对 v1.1.1 等新标签触发,并拉取请求以开发和修补分支。

name: CI

on:
  push:
    tags: v[1-9]+.[0-9]+.[0-9]+
    
  pull_request:
    branches: [develop, hotfix*]

CD 工作流在前一个工作流 (CI) 完成时触发。

name: CD

on:
  workflow_run:
    workflows: ['CI']
    push:
      tags: v[1-9]+.[0-9]+.[0-9]+
    types:
      - completed

目前,我的目标是根据新标签的名称生成包(Docker 映像)。我正在尝试使用dawidd6/action-get-tag@v1 操作读取 CD 工作流程中的新标签名称:

- name: Get tag
  id: tag
  uses: dawidd6/action-get-tag@v1
- name: Use tag
  run: echo ${{steps.tag.outputs.tag}}

但我收到以下错误:

Run dawidd6/action-get-tag@v1
env:
  IMAGE_NAME: open-tuna-api
Error: Not a tag ref (refs/heads/master)

我的问题是:如何在我的 CD 工作流中读取 CI 工作流之后触发的标签名称?

【问题讨论】:

    标签: github continuous-integration github-actions continuous-delivery


    【解决方案1】:

    首先,您可以在不使用操作的情况下获取标签,使用${GITHUB_REF##*/}

    示例测试工作流程:

    name: Experiment
    
    on:
      push:
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - name: Debug
          run: echo "Works. Tag is ${GITHUB_REF##*/}"
    

    至于您提到的链式工作流程 - 我不确定是否可以获得祖先工作流程的标签,因为 the documentation 提到它是在默认分支上触发的,并且是该分支上的最后一次提交。

    【讨论】:

    • 嗨@DannyB!看来你是对的。无法使用workflow_run 获取标签名称。您知道实现此目标的任何其他方式(在由workflow_run 触发的工作流中使用标签名称)。也许是一种将标签名称设置为第一个工作流程的输出的方法......谢谢!
    • 想不出办法,尽管我完全理解这种需要。或许可以在 GitHub 论坛上进行讨论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 2021-08-14
    • 2017-02-16
    • 1970-01-01
    • 2020-05-31
    • 2019-04-15
    • 2018-07-22
    相关资源
    最近更新 更多