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

GitHub Action步骤中生成JSON字符串报错该如何解决?

报错原因

  1. YAML语法缩进错误:你给出的步骤配置中run字段的缩进和同级的name字段不对齐,YAML对缩进高度敏感,缩进不匹配会直接导致GitHub Action解析步骤失败。
  2. 引号嵌套解析冲突:将jq输出直接放在echo "JSON_STRING=$(...)"的双引号内部时,jq输出的JSON自带的双引号会和外层双引号产生转义冲突,本地终端的Bash解析规则和GitHub Action默认的Shell解析规则存在细微差异,因此出现本地可运行、Action中报错的情况。
  3. 环境变量写入规则不兼容:GitHub Actions要求如果环境变量值包含特殊字符、引号、换行等内容,不能直接用字符串拼接的方式写入$GITHUB_ENV,否则会出现变量截断、解析错误问题。

修复方案

使用GitHub Actions官方推荐的 heredoc 语法写入环境变量,同时修正YAML缩进,完全规避转义冲突问题:

- name: Generate JSON string
  run: |
    JSON_STRING=$( jq -n \
      --arg image "foo" \
      --arg region "us-west-2" \
      --arg secret "mysecret" \
      --arg env "prod" \
      '{"flask":{"image": $image,"ports":{"5000":"HTTP"},"environment":{"FLASK_ENV":$env,"AWS_SECRET_NAME": $secret,"AWS_REGION_NAME": $region}}}' )
    echo "JSON_STRING<<EOF" >> $GITHUB_ENV
    echo "$JSON_STRING" >> $GITHUB_ENV
    echo "EOF" >> $GITHUB_ENV

修复后生成的JSON_STRING可以在后续步骤中直接通过${{ env.JSON_STRING }}读取使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:00