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

GitHub Actions中如何将字符串数组转为矩阵?解析错误求解决

解决GitHub Actions Matrix解析JSON数组的错误

错误原因

你遇到的问题根源是全局环境变量VERSIONS的JSON格式不合法:原配置里的[9.0.0, 11.0.0]没有给版本号加双引号,JSON解析器会把9.0.0当作浮点数尝试解析,但GitHub Actions的fromJSON在处理这种格式时会触发类型错误——因为版本号本质是字符串,而非数字,必须用双引号包裹才能被正确识别为字符串数组。

修正方案

步骤1:修正全局环境变量格式

将VERSIONS改为合法的JSON字符串数组,给每个版本号添加双引号:

env:
  VERSIONS: '["9.0.0", "11.0.0"]'

步骤2:确保矩阵输出传递正确

你的prepare-matrix作业逻辑本身没问题,修改后的完整工作流配置如下:

env:
  VERSIONS: '["9.0.0", "11.0.0"]'

jobs:
  prepare-matrix:
    name: Prepare Matrix Output
    runs-on: ubuntu-latest
    outputs: 
      all_versions: ${{ steps.step1.outputs.matrix }}
    steps: 
      - name: Create Matrix Variable
        id: step1
        run: echo "matrix=${{ env.VERSIONS }}" >> $GITHUB_OUTPUT

  deploy-gke:
    name: Deploy to GKE
    runs-on: ubuntu-latest
    needs: [prepare-matrix]
    strategy: 
      max-parallel: 2
      matrix: 
        version: ${{ fromJSON(needs.prepare-matrix.outputs.all_versions) }}
    steps:
      # 你的部署步骤示例
      - name: Print target version
        run: echo "Deploying version ${{ matrix.version }}"

额外防错方案

如果担心手动编写JSON出错,可以在prepare-matrix作业中用jq动态生成合法的JSON数组,彻底避免格式问题:

jobs:
  prepare-matrix:
    name: Prepare Matrix Output
    runs-on: ubuntu-latest
    outputs: 
      all_versions: ${{ steps.step1.outputs.matrix }}
    steps: 
      - name: Create Matrix Variable
        id: step1
        run: |
          # 用jq自动生成标准JSON字符串数组
          VERSIONS_ARRAY=$(jq -n '$ARGS.positional' --args 9.0.0 11.0.0)
          echo "matrix=$VERSIONS_ARRAY" >> $GITHUB_OUTPUT

这种方式无需预先在全局env定义数组,直接通过命令行参数传递版本号,由jq处理JSON格式,可靠性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:45:01