如何在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
相关产品推荐
相关产品推荐

