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

如何在GitHub Action中获取当前步骤的显示名称?

如何在自定义GitHub Action中获取Web UI显示的自身步骤名称?

我正在开发自定义GitHub Action工具代码,需要获取该Action在GitHub Web UI中显示的自身步骤名称。目前尝试了两种方法,但都遇到了障碍:

  • 环境变量与上下文限制:GITHUB_WORKFLOW和GITHUB_JOB能拿到YAML里定义的名称,但GITHUB_ACTION仅返回步骤的id(未设置id时是生成的名称,比如__run或__actions/checkout_2),且根据GitHub文档,步骤名称不存在于任何上下文对象中。
  • GitHub API方案的局限:理论上可通过API获取工作流运行数据来定位步骤,但存在多个问题:
    • 无直接的GITHUB_JOB_ID环境变量,用GITHUB_JOB的YAML名称定位作业不可行——可重用工作流场景下作业名称带前缀,矩阵执行场景下带后缀,无法匹配API返回的作业名。
    • 即使定位到作业,API存在长达60秒的延迟,无法获取到当前处于in_progress状态的步骤,添加Cache-Control: no-cache请求头也无法解决延迟问题。

可行解决方案:通过工作流传递步骤名称到Action

由于GitHub原生未提供直接获取步骤显示名称的机制,最可靠的方式是在工作流YAML中显式将步骤名称传递给自定义Action,具体实现方式如下:

  1. 在工作流中传递步骤名称作为输入参数
    在调用自定义Action时,将当前步骤的name作为输入参数传入:

    steps:
      - name: "我的自定义步骤显示名称"
        uses: your-username/your-custom-action@v1
        with:
          step-name: "我的自定义步骤显示名称"
    
  2. 在自定义Action中接收并使用该参数
    在Action的action.yml中定义对应的输入参数:

    inputs:
      step-name:
        description: "当前步骤在Web UI中显示的名称"
        required: true
    

    之后在Action的代码中,通过GitHub自动生成的环境变量获取该值(输入参数会被转为大写并以INPUT_为前缀,空格替换为连字符):

    // Node.js环境示例
    const stepName = process.env.INPUT_STEP_NAME;
    
    # Python环境示例
    import os
    step_name = os.getenv("INPUT_STEP_NAME")
    

方案优势

  • 彻底避开API延迟、作业/步骤定位的复杂问题,直接获取准确的显示名称。
  • 兼容性极强,不受可重用工作流、矩阵执行等场景的影响。
  • 实现简单,无需额外权限或API调用逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:20:06