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

GitHub Actions无法用变量构造策略矩阵的问题排查

问题分析与解决

你的问题出在三个核心环节:

1. 字符串分割逻辑错误

你用$envList -split ''把环境列表拆成了单个字符,比如"item1_pom item2"会被拆成i,t,e,m,1,_,p,o,m, ,i,t,e,m,2,后续循环根本找不到符合*_*规则的项,导致$unique_envList为空,传递给下一个作业的是空字符串,直接触发fromJson解析失败。

2. JSON数组格式不合法

你手动拼接的JSON数组没给元素加双引号,生成的是[item1, item3, item4],但合法的JSON字符串数组必须是["item1","item3","item4"],GitHub Actions的fromJson无法解析这种格式错误的内容。

3. 输出变量的生成方式不严谨

手动拼接JSON容易出现格式偏差,应该用PowerShell自带的工具生成标准JSON,同时要避免多余的换行或转义干扰。


修正后的完整工作流代码
name: Your Workflow

on:
  push:
    branches:
      - main

jobs:
  CONSTRUCT_UPLOAD_ZIP:
    outputs:
      NEWENV-MATRIX: ${{ steps.newmatrixtask.outputs.newgenmatrix }}

    runs-on: windows-latest

    steps:
      - name: Construct new zip per environment
        id: newmatrixtask
        run: |
          # 按空格分割环境列表,替换原错误的空字符串分割
          $envList = "item1_pom item2 item3_xml item4_txt"         
          $envList = $envList -split ' '

          $unique_envList = @()
          foreach ($item in $envList) {
            if ($item -like "*_*") {
              # 提取下划线前的部分
              $item = ($item -split "_")[0]
              $unique_envList += $item
            }
          }

          # 用ConvertTo-Json生成标准JSON数组,-Compress参数去掉多余换行
          $newmatrix = $unique_envList | ConvertTo-Json -Compress
          
          # 输出变量,确保格式正确无干扰
          Write-Output "newgenmatrix=$newmatrix" >> $env:GITHUB_OUTPUT

  upload-to:
    needs: CONSTRUCT_UPLOAD_ZIP
    runs-on: windows-latest

    strategy:
      matrix:
        envName: ${{ fromJson(needs.CONSTRUCT_UPLOAD_ZIP.outputs.NEWENV-MATRIX) }}

    steps:
      - name: Upload to JFrog
        run: |
          echo "Uploading for the environment: ${{ matrix.envName }}"

关键修正点说明
  • 把-split ''改成-split ' ',正确按空格分割环境项
  • 用ConvertTo-Json -Compress生成紧凑的标准JSON数组,自动给元素添加双引号
  • 用Write-Output确保输出的JSON没有多余换行,避免解析错误

修改后,upload-to作业会生成三个并行任务,分别对应item1、item3、item4,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:26:00