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
相关产品推荐
相关产品推荐

