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

GitHub工作流使用set-output命令执行失败返回退出码3问题咨询

问题原因说明

你提出的「GitHub无法解析bash变量$?」的猜测不成立,该报错的核心成因有两个:

  • GitHub Actions 执行bash脚本时默认开启set -e规则:只要脚本内任意一行命令返回非0退出码,整个脚本会直接终止,不会继续运行后续命令
  • terraform fmt -check命令本身的退出码规则固定:
    • 所有Terraform配置文件格式完全合规时返回0
    • 存在需要格式化的配置文件时返回3
    • 执行过程出现异常(如文件读取权限不足、配置语法错误)时返回其他非0值

你看到的Error: Process completed with exit code 3是terraform fmt -check本身返回的退出码,你的echo '::set-output name=bash_return_Value::$?'这行代码根本没有被执行到,脚本就因为前面的命令返回非0提前终止了。

调整方案(如果需要保留获取退出码的逻辑)

如果你的需求是无论terraform fmt执行成功与否,都要拿到其退出码写入步骤输出,可以调整脚本写法,规避set -e的提前终止逻辑:

- name: check_tf_code
  id: tf_check 
  run: |
    # 捕获terraform命令的退出码,避免触发set -e提前终止
    terraform fmt -check || fmt_exit_code=$?
    echo "::set-output name=bash_return_Value::${fmt_exit_code:-0}"
    # 如果需要保留原步骤的失败判定逻辑,取消下一行注释即可
    # exit ${fmt_exit_code:-0}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:24:04