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

Azure DevOps流水线无法下载Terraform子模块的问题咨询

解决Azure DevOps流水线无法拉取Terraform子模块的问题

核心问题定位

流水线初始Git拉取任务默认带--no-recurse-submodules参数,导致子模块未被拉取——这才是问题根源。你之前添加的-get=true是Terraform用于拉取Terraform Registry远程模块的参数,对Git子模块完全无效,所以没起到作用。

具体解决步骤

1. 修改Git拉取任务,开启子模块拉取

在Azure DevOps YAML流水线中,显式配置checkout步骤,替换默认的无递归拉取行为:

steps:
- checkout: self
  submodules: true  # 拉取一级子模块,若嵌套子模块需改用"recursive"
  fetchDepth: 0     # 可选:若子模块需要完整提交历史,取消深度限制

这个配置会让Git自动拉取仓库关联的所有指定子模块内容。

2. 调整CopyFiles任务,确保子模块文件被复制到制品

如果你的CopyFiles任务仅复制根目录文件,需修改参数覆盖子模块目录:

- task: CopyFiles@2
  inputs:
    sourceFolder: '$(Build.SourcesDirectory)'
    contents: |
      **/*  # 复制所有文件,包含子模块目录下的内容
    targetFolder: '$(Build.ArtifactStagingDirectory)'

这样就能把根目录和所有子模块的文件同步到制品目录中。

3. 简化Terraform Init配置(可选)

Git拉取完子模块后,Terraform会自动识别本地模块路径,无需额外添加-get=true参数。若子模块是远程Git模块,确保main.tf中的模块引用路径正确即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:42:42