【发布时间】:2019-08-29 18:02:38
【问题描述】:
我正在尝试在我的应用程序中使用私有 git 存储库作为子模块。 在本地,我可以克隆我的主仓库并正确提取所有子模块。
我正在使用 GitLab.com 进行托管和运行。 在 GitLab 运行器中,GitHub 托管的公共 repo 可以正常提取,但私有 GitLab 托管的 repo 不会提取最新代码。 我是主项目以及私有子模块的所有者。
我注意到这是在我在处理我的主项目时对我的子模块进行更改并推送之后开始的。
当我尝试在 GitLab 运行器上自动构建时,子模块会拉取,但即使它显示正确的(当前/最新)Git Ref SHA1,文件也会显示来自很久以前的提交。我已经尝试了多次迭代来获取私有仓库的方法,并且我已经对我的子模块进行了微不足道的更改。即使我仍然无法提取最新版本的子模块代码。
我已经尝试使用内置 GitLab runner variables 来拉取子模块,并且我已经设置了 before_script 来尝试手动拉取。
我还确保更新我的本地子模块并将更改提交到我的主存储库。
这里使用的是 GitLab runner 变量
variables:
GIT_SUBMODULE_STRATEGY: recursive
这是脚本之前的示例,我尝试过设置和不设置 GIT_SUBMODULE_STRATEGY: none 我已经尝试了许多这种删除和添加行的变体,试图获取最新的代码。
- git submodule sync --recursive
- git submodule update --force --recursive --remote
- git submodule foreach git pull
- git submodule status
- git submodule foreach git log -1
预期: GitLab runner 应该拉取子模块分支上的最新提交。
实际: GitLab 拉取子模块,但在某个提交后的代码更改不会显示,即使显示的提交是当前的。
【问题讨论】:
标签: git gitlab gitlab-ci git-submodules