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

在GitHub Actions矩阵中访问单个JSON字段及嵌套JSON

问题解答

一、能否访问project这类单个值?

可以,分两种场景处理:

1. 在矩阵运行步骤中直接访问单个值

你的现有配置已经把JSON数组解析为矩阵的include项,每个矩阵实例都会包含project和config字段。在step2的步骤里,直接通过${{ matrix.project }}或${{ matrix.config }}就能访问单个值,比如修改run命令:

steps:
- run: echo "当前项目:${{ matrix.project }},配置:${{ matrix.config }}"

2. 在matrix配置阶段单独提取单个值

如果想仅基于project字段生成矩阵(而非整个JSON对象),可以通过两种方式实现:

  • 方式一:在step1输出单独的字段数组
    修改step1的输出逻辑,直接输出project列表:
    - id: build
      run: echo "projects=[\"foo\",\"bar\"]" >> $GITHUB_OUTPUT
    
    然后在step2的matrix中引用:
    strategy:
      matrix:
        project: ${{ fromJson(needs.step1.outputs.projects) }}
    
  • 方式二:用表达式提取现有JSON中的字段
    借助GitHub Actions的map函数,从原JSON数组中提取project字段:
    strategy:
      matrix:
        project: ${{ fromJson(needs.step1.outputs.matrix) | map(attribute='project') }}
    

二、嵌套JSON对象的访问方法

如果输出的JSON包含嵌套结构,比如:

[{"project":"foo","config":{"mode":"Debug","target":"x86"}},{"project":"bar","config":{"mode":"Release","target":"x64"}}]

1. 在步骤中访问嵌套字段

通过链式点语法直接访问,比如:

steps:
- run: |
    echo "项目:${{ matrix.project }}"
    echo "构建模式:${{ matrix.config.mode }}"
    echo "目标架构:${{ matrix.config.target }}"

2. 在matrix配置阶段提取嵌套字段

同样用map函数配合链式属性提取,比如要提取所有config.mode字段生成矩阵:

strategy:
  matrix:
    build_mode: ${{ fromJson(needs.step1.outputs.matrix) | map(attribute='config.mode') }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:08:08