GitLab流水线克隆子模块时出现‘could not read Username’错误求助
GitLab流水线克隆子模块失败的解决办法
要不要转相对URL?
必须要!把子模块URL改成相对路径,是解决同GitLab实例同群组下子模块克隆权限问题的省心方案。因为主项目和子模块在同一实例同一群组时,用相对URL能让流水线自动复用主项目的CI/CD令牌权限,不用额外填用户名密码,自然就不会出现could not read Username的报错了。
怎么改?
打开项目根目录的
.gitmodules文件,把子模块的url换成相对路径:[submodule "build-tools"] path = build-tools url = ../build-tools.git(主项目路径是
core/frontend-dev/api-service.git,子模块是core/frontend-dev/build-tools.git,所以用../build-tools.git就能对应上)本地执行命令更新配置并提交:
git submodule sync git add .gitmodules git commit -m "把子模块URL改成相对路径" git push
还有其他办法吗?
要是不想改相对URL,试试这两种:
- 给CI令牌加权限:去子模块项目的「设置→成员」里,把主项目所在的群组或者主项目本身加进去,至少给「开发者」权限,这样流水线的
CI_JOB_TOKEN就能访问子模块了。 - 在
.gitlab-ci.yml里直接注入令牌:variables: GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_URL_OVERRIDE: "https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/core/frontend-dev/build-tools.git"
内容的提问来源于stack exchange,提问作者mdailey77
相关产品推荐
相关产品推荐

