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

在Bitbucket Pipeline中使用Renovate更新子模块仍报错的解决方法

解决Renovate私有子模块拉取的"Error mapping git submodules during extraction"问题

下面是几个排查和解决的方向,按优先级尝试:

1. 先把子模块的URL改成正确的HTTPS格式

  • 打开项目根目录的.gitmodules文件,确认所有私有子模块的url都是HTTPS开头的,比如https://github.com/your-org/private-submodule.git,别用SSH的git@github.com:...格式。
  • 要是之前用的是SSH,本地更新后推到仓库:
    git submodule set-url path/to/submodule https://github.com/your-org/private-submodule.git
    git add .gitmodules
    git commit -m "Switch submodule to HTTPS"
    git push
    

2. 确认Renovate的令牌有权限读子模块

  • 不管用的是GitHub PAT、GitLab令牌还是其他,得确保这个令牌能访问你的私有子模块仓库。GitHub的话至少要repo权限,GitLab要read_repository权限。
  • 如果是在CI里跑Renovate,比如GitHub Actions,要确认传递的令牌(不管是默认的GITHUB_TOKEN还是自定义令牌)覆盖了子模块仓库的访问权限。

3. 手动测试本地拉取,排除仓库本身的问题

  • 用HTTPS协议手动拉取整个项目(包括子模块),看看能不能成功:
    git clone --recurse-submodules https://github.com/your-org/main-repo.git
    
    要是本地都拉不下来,先解决本地的权限或配置问题,再看Renovate的情况。如果子模块还有嵌套子模块,得确保所有层级都是HTTPS且令牌能访问。

4. 清掉Renovate的缓存试试

  • 旧的缓存可能留着SSH相关的配置,导致冲突。自托管的Renovate直接清理工作目录的缓存;用Renovate App的话,触发仓库重新扫描,或者临时在配置里加"cache": "disable"测试。

5. 检查Renovate的配置有没有冲突

  • 打开renovate.json,确认开启了子模块支持:
    {
      "submodules": true,
      "gitSubmoduleCheckout": true
    }
    
  • 之前如果配过sshPrivateKey这类SSH相关的配置,得删掉,避免覆盖HTTPS的设置。

6. 开debug日志找具体错误

  • 把Renovate的日志级别设成debug(比如环境变量LOG_LEVEL=debug),看子模块拉取阶段的详细报错。日志里会显示具体是权限拒了、URL错了还是其他问题,方便精准解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:54:59