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

GitHub Actions Matrix报错:需定义至少一个向量的解决方法

解决GitHub Workflow矩阵传递的"Matrix must define at least one vector"错误

核心原因

GitHub Actions的strategy.matrix要求是键-值数组的结构化定义,直接传递数组对象会被识别为无效格式,必须通过include字段导入预定义的矩阵条目。

具体解决方案

1. 修正矩阵传递与解析方式

如果是从前置步骤生成矩阵JSON并传递给复合工作流,按以下方式调整:

  • 调用复合工作流时传递参数:

    jobs:
      generate_matrix:
        runs-on: ubuntu-latest
        outputs:
          matrix_data: ${{ steps.set_matrix.outputs.matrix }}
        steps:
          - id: set_matrix
            run: echo "matrix=[{\"account_id\":\"999999999999\",\"work_dir\":\"terraform/environments/test/us-east-2/**\"}]" >> $GITHUB_OUTPUT
    
      plan_apply:
        needs: generate_matrix
        uses: ./.github/workflows/composite.yml
        with:
          input_matrix: ${{ needs.generate_matrix.outputs.matrix_data }}
    
  • 复合工作流中正确解析矩阵:
    在复合工作流的plan_apply作业里,用include字段导入解析后的矩阵:

    jobs:
      plan_apply:
        runs-on: ubuntu-latest
        strategy:
          matrix:
            include: ${{ fromJSON(inputs.input_matrix) }}
        steps:
          - name: 使用矩阵变量
            run: |
              echo "账号ID: ${{ matrix.account_id }}"
              echo "工作目录: ${{ matrix.work_dir }}"
    

2. 确保输出严格符合JSON格式

你的验证输出[{account_id:999999999999,work_dir:terraform/environments/test/us-east-2/**}]不符合严格JSON规范(键未加双引号),会导致fromJSON解析失败。生成矩阵时务必输出标准JSON:

[{"account_id":"999999999999","work_dir":"terraform/environments/test/us-east-2/**"}]

3. 硬编码矩阵的正确写法

如果是直接在复合工作流中定义矩阵,不要用数组形式,而是通过include列出条目:

strategy:
  matrix:
    include:
      - account_id: 999999999999
        work_dir: terraform/environments/test/us-east-2/**

关键注意点

  • 不要直接将数组赋值给strategy.matrix,必须用include字段承载预定义的矩阵条目数组。
  • 所有传递的JSON必须是严格格式,键和字符串值都要用双引号包裹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:22:35