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

Cloud Build无法拉取Git子模块的问题求助

解决Cloud Build拉取Git子模块失败的问题

问题背景

配置了指向GitHub仓库的Cloud Build触发器,选择「Cloud Build配置文件(yaml或json)」选项。仓库包含Git子模块,但Cloud Build默认不会拉取子模块,导致用构建出的Docker镜像创建Compute VM后出现以下报错:

DEFAULT 2023-05-22T01 [resource.labels.instanceId: XXX-build] ImportError: cannot import name 'mysubmodule' from 'mysubmodule' (unknown location)

尝试两种方案均失败:

  • 将子模块路径改为SSH格式,问题未解决
  • 在cloudbuild.yaml中添加git命令时因参数格式错误报错,错误配置如下:
    - name: "gcr.io/cloud-builders/git"
      args:
        - submodule update --init --recursive
    
    执行时报错:

    Step #0: git: 'submodule update --init --recursive' is not a git command. See 'git --help'.

相关问题已在Google问题工单(编号123060361)中记录。

解决方法

1. 修正git命令的参数格式

Cloud Build的gcr.io/cloud-builders/git镜像要求每个命令参数单独作为数组元素,不能将整个命令串写为单个参数。正确配置如下:

steps:
  # 拉取所有子模块(包括嵌套子模块)
  - name: 'gcr.io/cloud-builders/git'
    args: ['submodule', 'update', '--init', '--recursive']
  # 后续构建步骤示例:Docker镜像构建
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/[你的项目ID]/[目标镜像名]', '.']

2. 私有子模块的权限配置(若子模块为私有仓库)

如果子模块是私有GitHub仓库,需要配置SSH身份验证:

  1. 生成Cloud Build服务账号的SSH密钥对
  2. 将公钥添加到子模块仓库的「部署密钥」中,开启读取权限
  3. 在cloudbuild.yaml中添加SSH配置步骤(建议用Secret Manager存储私钥,避免硬编码):
steps:
  - name: 'gcr.io/cloud-builders/git'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        mkdir -p /root/.ssh
        # 从Secret Manager读取私钥
        gcloud secrets versions access latest --secret=[你的私钥密钥名] > /root/.ssh/id_rsa
        chmod 600 /root/.ssh/id_rsa
        ssh-keyscan github.com >> /root/.ssh/known_hosts
        git submodule update --init --recursive
  # 后续构建步骤
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/[你的项目ID]/[目标镜像名]', '.']
secrets:
  - kmsKeyName: projects/[你的项目ID]/locations/[区域]/keyRings/[密钥环名]/cryptoKeys/[密钥名]
    secretEnv:
      SSH_PRIVATE_KEY: [你的私钥密钥资源ID]

内容的提问来源于stack exchange,提问作者engineer-x

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:43:19