如何在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,具体实现方式如下:
在工作流中传递步骤名称作为输入参数
在调用自定义Action时,将当前步骤的name作为输入参数传入:steps: - name: "我的自定义步骤显示名称" uses: your-username/your-custom-action@v1 with: step-name: "我的自定义步骤显示名称"在自定义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
相关产品推荐
相关产品推荐

