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

GitHub Actions执行terraform init报No such file or directory问题咨询

故障根因及解决方法

你遇到的Error: No such file or directory报错和GitHub Actions(GHA)近期的两个变更直接相关,和Helm更新无关联:

  • 第一是Ubuntu runner的变量解析逻辑调整:当前ubuntu-latest对应镜像已经升级到22.04版本,对未定义或为空的工作目录变量的 fallback 规则发生变化:旧版本runner如果working-directory取值为空,会自动回退到$GITHUB_WORKSPACE(也就是仓库根目录),新版本如果变量为空会直接将空字符串作为工作目录路径,触发路径不存在报错。
  • 第二是你使用的旧版本Action不兼容新runner规则:actions/checkout@v2和hashicorp/setup-terraform@v1.2.1都是停止维护多年的版本,不会适配新runner的变量解析逻辑。

你配置的流水线的核心问题点在于:
你在defaults.run.working-directory引用了${{ env.TERRAFORM_WORKING_DIR }}变量,如果你新建的流水线没有在Job或全局env中预先定义这个变量的取值,该变量解析结果为空,就会导致所有run步骤(包括pwd、terraform init)都尝试进入不存在的空路径,直接抛出找不到文件或目录的错误。旧流水线正常是因为旧流水线已经预先配置了该环境变量,或者旧runner的fallback规则掩盖了变量未定义的问题。

排查修复步骤

  • 首先在Get directory步骤前新增一行变量打印步骤,确认环境变量取值:
    - name: Print working dir variable
      run: echo "TERRAFORM_WORKING_DIR value is ${{ env.TERRAFORM_WORKING_DIR }}"
    
  • 确认变量未定义的话,在Job层面的env块添加TERRAFORM_WORKING_DIR的正确取值,比如你存放terraform配置的目录是仓库根目录的terraform文件夹,就配置为TERRAFORM_WORKING_DIR: ./terraform
  • 升级依赖的Action到兼容新版本runner的版本:将actions/checkout@v2替换为actions/checkout@v4,hashicorp/setup-terraform@v1.2.1替换为hashicorp/setup-terraform@v3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:15:06