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

如何通过Terraform archive_file访问GitLab子模块目录生成压缩包

用GitLab子模块作为源路径生成Terraform ZIP文件

Terraform的archive_file数据源不支持直接引用Git远程路径作为source_dir,必须先将GitLab子模块拉取到本地文件系统,再使用本地路径作为打包源。以下是实现步骤:

1. 拉取GitLab子模块到本地

使用git_submodule资源将目标子模块克隆到本地指定目录,替换示例中的仓库URL为你的GitLab子模块克隆地址:

resource "git_submodule" "lab_submodule" {
  url  = "https://gitlab.com/your-org/your-submodule-repo.git" # GitLab子模块的克隆地址
  path = "${path.module}/local-submodule-dir" # 本地存放子模块的相对路径
}

2. 配置archive_file打包子模块目录

修改archive_file的source_dir,指向本地拉取的子模块中的目标目录,并通过depends_on确保子模块拉取完成后再执行打包:

data "archive_file" "zip_file" {
  type        = "zip"
  output_path = "${path.module}/${var.archive_name}"
  source_dir  = "${git_submodule.lab_submodule.path}/source_files" # 子模块内的目标目录

  depends_on = [git_submodule.lab_submodule]
}

关键注意事项

  • 必须使用GitLab子模块的克隆地址(HTTPS或SSH格式),而非网页端的/-/tree/路径,后者是浏览器访问链接,无法用于Git克隆。
  • git_submodule的path需设置为Terraform工作目录下的相对路径,确保archive_file能访问到拉取后的文件。
  • depends_on是必要的,它强制Terraform先完成子模块拉取,再执行打包操作,避免因文件未同步导致的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:57:43