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

克隆含Git Submodule的公共仓库时提示repository not found错误如何解决

报错产生原因
  • AWS CodeBuild的默认源码下载逻辑默认不会自动初始化和更新Git Submodule,如果你的项目依赖Submodule内容,默认的DOWNLOAD_SOURCE阶段不会处理这部分逻辑,就会触发Submodule相关的找不到报错。
  • 仓库根目录的.gitmodules文件中配置的Submodule仓库地址有误,比如用了SSH格式的地址(git@github.com:xxx/xxx.git),而CodeBuild的默认执行环境没有配置对应的GitHub SSH密钥,哪怕是公共仓库用SSH地址拉取也会因为身份校验失败报错。
  • 你指定的主分支main下,.gitmodules中记录的Submodule commit哈希不存在,或者对应Submodule仓库本身被删除/设为私有,也会触发找不到的报错。
排查与解决方法

第一步:校验.gitmodules配置

先拉取主仓库到本地,检查根目录下的.gitmodules文件内容,确认所有Submodule的url用的是HTTPS格式(公共仓库用HTTPS无需身份校验),示例正确格式:

[submodule "xxx"]
    path = xxx
    url = https://github.com/xxx/xxx.git

如果是SSH格式的url,改成对应的HTTPS地址,提交到主仓库的main分支。

第二步:修改Build Spec配置,关闭默认源码下载,手动执行拉取逻辑

因为默认的DOWNLOAD_SOURCE阶段不处理Submodule,你需要先在CodeBuild项目的环境变量里配置CODEBUILD_SKIP_DOWNLOAD_SOURCE的值为true,跳过默认的源码下载步骤,然后修改buildspec.yml内容如下:

version: 0.2

phases:
  install:
    commands:
      - ./install-packages
      # 配置Git基础信息,避免Git弹出警告
      - git config --global user.name "CodeBuild"
      - git config --global user.email "codebuild@example.com"
      # 手动拉取主仓库代码
      - git clone --branch main https://github.com/queglay/firehawk.git
      - cd firehawk
      # 初始化并递归拉取所有Submodule
      - git submodule update --init --recursive
  build:
    commands:
      - echo '...replace with real build commands...'
      # 所有构建逻辑在firehawk目录下执行即可

artifacts:
  # 调整产物根目录到拉取的仓库路径下
  base-directory: firehawk
  files:
    - '**/*'

第三步:特殊场景排查

如果完成上面两步还是报错,逐一检查以下内容:

  • 本地手动执行git clone --recursive https://github.com/queglay/firehawk.git,确认是否可以正常拉取所有Submodule,如果本地也报错,说明是.gitmodules里的Submodule地址配置错误,修正后重新提交即可。
  • 如果Submodule是私有仓库,需要给CodeBuild配置对应的GitHub个人访问令牌(PAT),拉取的时候把PAT嵌入HTTPS地址即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:02