如何在gitlab-ci中指定子模块分支?

问题描述 投票:0回答:3

如何在 .gitlab-ci.yml 中为 gitlab-ci 中的子模块(不同的存储库)指定分支?

continuous-integration gitlab continuous-deployment gitlab-ci
3个回答
11
投票

你不知道。您可以在正在构建的项目的

.gitmodules
文件中指定它。

[submodule "MyRepo"]
    path = MyRepo
    url = https://github.com/vendor/MyRepo.git
    branch = master

4
投票

连同@stefan对此问题的回答。您还必须告诉 Git 仅查看指定分支的最新提交。无论分支如何,

git submodule update
似乎总是获取最新的提交。执行
git submodule update --remote
似乎会强制 git 专注于您在
.gitmodules
文件中指定的分支。

所以在你的

.gitmodules
文件中,正如@stefen提到的:

[submodule "MyRepo"]
    path = MyRepo
    url = https://github.com/vendor/MyRepo.git
    branch = master

然后在您的 GitLab

.gitlab-ci.yml
文件中,您需要指定在设置子模块时仅查看配置的分支。我的文件包括这个
before_script

# GitLab CI provides a variable "GIT_SUBMODULE_STRATEGY" that sets up submodules automatically
# But then branch tracking doesn't work (doesn't seem to allow for specifying the --remote) flag
before_script:
 - git submodule sync --recursive
 - git submodule update --init --remote --recursive

根据文档,这个

before_script
GIT_SUBMODULE_STRATEGY
提供的功能相同(除了我可以将
--remote
标志添加到
before_script
):https://docs.gitlab.com/ee/ ci/yaml/README.html#git-submodule-strategy


0
投票

现在您可以在 gitlab ci 文件中设置

GIT_SUBMODULE_UPDATE_FLAGS: --remote
。这将检查
.gitmodules
中定义的分支的最新提示。

参见 gitlab ci 文档

© www.soinside.com 2019 - 2024. All rights reserved.