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

如何在GitHub Actions中展示某一步骤的所有输出?

GitHub Actions遍历步骤输出的问题解决

问题所在

你直接在shell循环里引用${{ steps.captureStatus.outputs }}是行不通的,因为steps.<id>.outputs是GitHub Actions的上下文对象,它会被渲染成类似[object Object]或者无结构的键值对字符串,shell没法把它当作可遍历的数组或集合处理,最终循环只会把整个字符串当作单个项执行。

正确的解决方法

方法1:用JSON解析遍历键值对

借助toJSON函数把输出对象转成标准JSON字符串,再用jq工具解析遍历:

- name: Display all step outputs
  run: |
    # 把输出对象转成JSON后用jq遍历每个键值对
    echo '${{ toJSON(steps.captureStatus.outputs) }}' | jq -r 'to_entries[] | "\(.key): \(.value)"'

这个方法能清晰输出每个输出的键和对应的值,GitHub托管的runner默认自带jq工具,无需额外安装。

方法2:通过环境变量遍历

GitHub Actions会自动将步骤的每个输出注入为环境变量,变量名格式为STEPS_<步骤ID大写>_OUTPUTS_<输出名大写>,用bash的变量扩展可以匹配这些变量:

- name: Display outputs via environment variables
  run: |
    # 遍历所有以STEPS_CAPTURESTATUS_OUTPUTS_开头的环境变量
    for var in "${!STEPS_CAPTURESTATUS_OUTPUTS_@}"; do
      echo "$var = ${!var}"
    done

注意这里步骤IDcaptureStatus要转成全大写的CAPTURESTATUS,输出名也会自动转成大写格式。

方法3:直接打印完整JSON(快速调试)

如果只是想快速查看所有输出的结构,直接打印转成JSON的结果即可:

- name: Print all outputs as JSON
  run: echo '${{ toJSON(steps.captureStatus.outputs) }}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:07:05