GitHub Action步骤中生成JSON字符串报错该如何解决?
报错原因
- YAML语法缩进错误:你给出的步骤配置中
run字段的缩进和同级的name字段不对齐,YAML对缩进高度敏感,缩进不匹配会直接导致GitHub Action解析步骤失败。 - 引号嵌套解析冲突:将jq输出直接放在
echo "JSON_STRING=$(...)"的双引号内部时,jq输出的JSON自带的双引号会和外层双引号产生转义冲突,本地终端的Bash解析规则和GitHub Action默认的Shell解析规则存在细微差异,因此出现本地可运行、Action中报错的情况。 - 环境变量写入规则不兼容: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
相关产品推荐
相关产品推荐

