如何将Terraform输出变量保存为Github Action环境变量
问题根因与解决方案
直接写入terraform output结果到GITHUB_ENV异常
根因:默认terraform output返回字符串类型结果时会自动包裹双引号,还可能携带隐藏的格式字符,写入环境变量后会导致值不符合预期。
解决方案:使用-raw参数直接输出纯净值:
- run: echo "TEST=$(terraform output -raw vm_ip)" >> $GITHUB_ENV
后续步骤即可正常使用${{ env.TEST }}调用该变量。
jq解析JSON报错parse error: Invalid numeric literal at line 1, column 9
根因:
- 未关闭Terraform的颜色输出,CI环境中默认生成的颜色控制字符会写入JSON文件,肉眼不可见但会破坏JSON格式合法性
- 使用
>>追加写入文件,若之前步骤有残留内容会导致JSON结构被破坏
解决方案:
# 覆盖写入纯净JSON文件,关闭颜色输出 - run: terraform output -json -no-color > /tmp/tf.out.json # 用jq的-r参数输出无引号的原始值,写入环境变量 - run: echo "TEST=$(jq -r '.vm_ip.value' /tmp/tf.out.json)" >> $GITHUB_ENV
注意事项
对于标记为sensitive: true的敏感输出(如数据库密码),写入GITHUB_ENV后Github Actions会自动对日志中的明文做脱敏处理,无需额外配置。
内容的提问来源于stack exchange,提问作者Alexandru
相关产品推荐
相关产品推荐

