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

如何在GitHub Actions中将空格分隔单词列表转为JSON数组用作策略矩阵

GitHub Actions中转换空格分隔列表为JSON数组的实现方法

1. 在Bash步骤中生成合法JSON数组

利用GitHub Runner自带的jq工具,把空格分隔的字符串转成标准JSON数组:

# 定义你的空格分隔列表
MY_LIST="hello1 hello2 hello3"

# 转换为JSON数组:先把空格替换为换行,再逐个转成JSON字符串,最后合并为数组
JSON_ARRAY=$(echo "$MY_LIST" | tr ' ' '\n' | jq -R . | jq -s .)

执行后JSON_ARRAY的值就是["hello1","hello2","hello3"],完全符合JSON语法规范。

2. 将JSON数组写入输出变量

把生成的JSON数组写入GITHUB_OUTPUT,供后续作业调用:

echo "matrix_values=$JSON_ARRAY" >> "$GITHUB_OUTPUT"

3. 在策略矩阵中使用fromJSON读取

在依赖的作业里,通过fromJSON()解析输出的JSON数组,直接作为矩阵参数:

jobs:
  # 生成矩阵参数的前置作业
  prepare-matrix:
    runs-on: ubuntu-latest
    outputs:
      matrix_items: ${{ steps.gen-matrix.outputs.matrix_values }}
    steps:
      - id: gen-matrix
        run: |
          MY_LIST="hello1 hello2 hello3"
          JSON_ARRAY=$(echo "$MY_LIST" | tr ' ' '\n' | jq -R . | jq -s .)
          echo "matrix_values=$JSON_ARRAY" >> "$GITHUB_OUTPUT"

  # 使用矩阵的作业
  run-with-matrix:
    needs: prepare-matrix
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target: ${{ fromJSON(needs.prepare-matrix.outputs.matrix_items) }}
    steps:
      - name: Process item
        run: echo "当前处理目标:${{ matrix.target }}"

特殊情况处理

如果列表元素包含空格,需要先将元素用引号包裹(比如MY_LIST='"hello world" hello2'),再用jq的split方法处理:

JSON_ARRAY=$(echo "$MY_LIST" | jq -c 'split(" ")')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:22:34