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

GitHub Actions遍历JSON对象数组失败,策略矩阵报错求助

解决GitHub Actions Strategy矩阵遍历对象数组报错问题

问题原因

GitHub Actions的strategy.matrix要求传入键值对结构的对象(键对应参数名,值为待遍历的数组),而你直接传入了对象数组,不符合格式要求,因此触发"A sequence was not expected"错误。

解决步骤

1. 调整JSON输出格式(两种方式选其一)

方式一:修改读取JSON的Shell命令

在read-json步骤中,把原对象数组包装成带键的JSON对象:

- name: Read JSON
  id: read-json
  run: |
    JSON=$(cat ./neededServers.json)
    # 将原数组包装到名为servers的键下
    echo "matrix={\"servers\": $JSON}" >> $GITHUB_OUTPUT

方式二:直接生成带键的JSON文件

如果可以控制neededServers.json的生成逻辑,直接输出如下格式的内容:

{
  "servers": [
    {
        "config":"small",
        "ID":"1234",
        "memory":"4096",
        "vcpus":"2"
    },
    {
        "config":"small",
        "ID":"2345",
        "memory":"4096",
        "vcpus":"2"
    }
  ]
}

这种情况下read-json步骤无需修改,保持原来的读取逻辑即可。

2. 修改Create作业的Matrix配置

将strategy.matrix调整为引用包装后的数组:

create:
  needs: servers
  runs-on: ubuntu-latest
  strategy:
    matrix:
      server: ${{ fromJson(needs.servers.outputs.matrix).servers }}
  steps:
    - name: Test
      run: |
        echo "Server ID: ${{ matrix.server.ID }}"
        echo "Config: ${{ matrix.server.config }}"

验证逻辑

调整后,strategy.matrix会遍历servers数组中的每个对象,每个对象作为一个独立的matrix实例,你可以通过${{ matrix.server.[属性名] }}的方式访问对象中的字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:15:50