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

使用GitHub Actions结合Terraform工作流(非Terraform Cloud)部署GCP Compute Engine VM服务器时Terraform Format步骤报错求助

搞定GitHub Actions里Terraform Format步骤的报错问题

嘿,我来帮你捋捋这个问题:你的main.tf在本地和Terraform Cloud都能正常跑,但GitHub Actions里的terraform fmt -check却报错,这是因为fmt命令对代码格式有严格的规范要求——哪怕是多了个空格、少了个空行或者缩进不对,都会触发检查失败。下面是具体的解决办法:

1. 先在本地定位格式问题

先在你的本地终端里跑一遍terraform fmt命令,这个命令会自动帮你把所有不符合规范的格式修复好。修复完成后,你可以看看文件里哪些地方被改动了,然后把修正后的文件推送到GitHub仓库,再重新触发Actions试试。

2. 调整Actions里的Format命令(可选操作)

如果你想先看看具体是哪些格式出了问题,可以把Format步骤的命令改成terraform fmt -check -diff,这样会输出详细的格式差异;如果你的仓库里还有子目录的tf文件,记得加上-recursive参数检查所有文件:

- name: Terraform Format
  run: terraform fmt -check -diff -recursive

3. 直接用规范格式的main.tf

我已经按照Terraform的官方格式规范帮你调整了main.tf,你可以直接替换使用:

provider "google" {
  project = "test-project-1"
  region  = "us-west1"
  zone    = "us-west1-b"
}

resource "google_compute_instance" "default" {
  name         = "test-main-node"
  machine_type = "custom-4-8192"

  boot_disk {
    initialize_params {
      image = "ubuntu-os-cloud/ubuntu-minimal-1804-lts"
      size  = "10"
      type  = "pd-ssd"
    }
  }

  network_interface {
    network = "default"
  }
}

主要调整点:

  • 同一层级的参数等号前后统一空格并对齐,提升可读性
  • 不同资源块、嵌套块之间添加空行,区分代码结构
  • 统一缩进格式,保持代码风格一致

4. 固定Terraform版本避免差异

另外,你的Setup Terraform步骤没有指定具体版本,不同版本的fmt规则可能略有不同,建议指定和你本地、Terraform Cloud一致的版本,比如:

- name: Setup Terraform
  uses: hashicorp/setup-terraform@v1
  with:
    terraform_version: "1.5.0" # 换成你实际使用的Terraform版本

按照上面的方法调整后,重新触发GitHub Actions的工作流,应该就能顺利通过Format步骤啦!

内容的提问来源于stack exchange,提问作者Matt - Block-Farms.io

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 22:07:47