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

GitHub Actions中设置TF_LOG无效如何调试Terragrunt Plan报错

问题根因
  • TF_LOG=DEBUG配置本身是生效的,你看不到DEBUG日志的核心原因是执行terragrunt run-all plan时加了>/dev/null重定向规则,所有标准输出内容(包括Terraform DEBUG级别日志、报错信息)全被直接丢弃,不会输出到GitHub Actions日志面板。
  • 仅在run脚本内用export声明环境变量,存在小概率无法透传给Terragrunt拉起的所有Terraform子进程的情况,稳定性不如直接在工作流步骤级env块声明变量。
  • 你写的terragrunt show tfplan本身存在逻辑错误:run-all模式下每个子模块会在自身工作目录生成独立的plan文件,根目录不存在名为tfplan的plan文件,这行命令本身也会触发执行失败。
可用的修复配置

直接替换原有Terragrunt Plan步骤的代码即可:

- name: Terragrunt Plan
  id: plan
  if: github.event_name == 'pull_request'
  # 步骤级环境变量会自动透传给该步骤拉起的所有子进程,不存在变量不生效问题
  env:
    TF_LOG: DEBUG
    TERRAGRUNT_LOG: debug # 同时开启Terragrunt自身的调试日志,覆盖全链路
  run: | 
    # 移除>/dev/null重定向,保证所有日志正常输出
    # 增加--terragrunt-parallelism=1参数串行执行所有模块,避免多模块并行输出日志交错,难以定位报错点
    terragrunt run-all plan -no-color --terragrunt-non-interactive --terragrunt-parallelism=1 -out=tfplan
    # 如需查看plan结果,不要直接在根目录执行show,可根据plan执行输出的报错模块路径,进入对应目录执行show,或调整run-all遍历逻辑
调试优化技巧
  • 如果DEBUG日志量级太大,关键报错被冲刷,可以先把TF_LOG调整为INFO级别,定位到具体出错的模块后,单独进入对应模块目录开启DEBUG日志复现问题,减少无效日志干扰。
  • 如果需要同时留存日志文件,可以把执行命令调整为terragrunt run-all plan -no-color --terragrunt-non-interactive --terragrunt-parallelism=1 -out=tfplan 2>&1 | tee plan_debug.log,日志既会实时打印到Actions控制台,也会全量存入plan_debug.log文件,后续可作为工作流产物上传留存。
  • 非必要不要在CI执行步骤里加>/dev/null重定向,该规则会无差别丢弃所有标准输出,包括报错堆栈,直接提升问题排查成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:27:18