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

如何在GitHub Actions中配置Terragrunt工作流?

Terragrunt + GCP GitHub Actions 配置方案

核心问题

找不到官方的Terragrunt安装GitHub Action,现有旧方案仅适配AWS,需适配GCP环境完成CI/CD工作流配置。

解决方案

方法1:使用第三方维护的Terragrunt安装Action

Gruntwork官方维护了可靠的setup-terragrunt Action,可直接安装指定版本的Terragrunt:

修改工作流中的Setup Terragrunt步骤:

- name: Setup Terragrunt
  uses: gruntwork-io/setup-terragrunt@v1
  with:
    terragrunt-version: latest # 可替换为具体稳定版本,如 v0.50.0

方法2:手动安装Terragrunt(无第三方依赖)

若不想依赖第三方Action,可通过脚本手动下载安装:

- name: Setup Terragrunt
  run: |
    # 获取Terragrunt最新版本号
    TERRA_GRUNT_VERSION=$(curl -s https://api.github.com/repos/gruntwork-io/terragrunt/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
    # 下载对应Linux二进制文件
    wget https://github.com/gruntwork-io/terragrunt/releases/download/${TERRA_GRUNT_VERSION}/terragrunt_linux_amd64
    # 赋予执行权限并移动到系统全局路径
    chmod +x terragrunt_linux_amd64
    sudo mv terragrunt_linux_amd64 /usr/local/bin/terragrunt

完整适配GCP的工作流示例

需确保同时安装Terraform(Terragrunt依赖该工具),以下是完整的workflow.yaml:

name: 'Terragrunt CI'

on:
  push:
    branches:
    - main
  pull_request:

jobs:
  Terragrunt:
    name: 'Terragrunt'
    runs-on: ubuntu-latest
    defaults:
      run:
        shell: bash

    steps:
    - name: Checkout
      uses: actions/checkout@v4 # 建议使用最新版本

    # 安装Terraform(Terragrunt运行依赖)
    - name: Setup Terraform
      uses: hashicorp/setup-terraform@v3
      with:
        terraform-version: latest

    # 安装Terragrunt(二选一即可)
    - name: Setup Terragrunt
      uses: gruntwork-io/setup-terragrunt@v1
      with:
        terragrunt-version: latest

    - name: Terragrunt Init
      run: terragrunt init --terragrunt-non-interactive
      env:
        GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

    - name: Terragrunt Plan
      run: terragrunt run-all plan --terragrunt-non-interactive
      env:
        GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

    - name: Terragrunt Apply
      if: github.ref == 'refs/heads/main' && github.event_name == 'push'
      run: terragrunt run-all apply --terragrunt-non-interactive
      env:
        GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}

注意事项

  • 确保仓库已配置GOOGLE_CREDENTIALS密钥,内容为GCP服务账号的JSON密钥
  • run-all命令会遍历所有子模块执行操作,若需指定单个模块,可替换为terragrunt plan或terragrunt apply
  • 建议指定Terraform和Terragrunt的具体版本,避免跨版本兼容问题

内容的提问来源于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.08.24 17:37:00