我有以下设置:
Projects/
projA/
.git/
.gitlab-ci.yml
src/
projB/
.git/
.gitlab-ci.yml
src/
projC/
.git/
.gitlab-ci.yml
src/
其中每个 projX 都是一个独立的项目,并且具有相应的 Git 存储库。这些项目都有自己的 CI/CD 文件,但文件中使用的 Docker 镜像.gitlab-ci.yml
在所有项目中都是相同的。
我的问题是,是否有一种有效/简单的方法来更新每个本地存储库中的所有.gitlab-ci.yml
文件并将更改推送到每个远程 Git 存储库?
我知道我可以编写一个 shell 脚本来帮我完成这个任务,但我想知道是否有人知道 git 是否提供了这样的功能。
答案1
如果.gitlab-ci.yml
文件在三个存储库中始终相同,则保留它的三个副本可能不是正确做法。最好的情况下,这容易出错,最坏的情况下,这会导致冲突,导致它们不同步,而您不确定哪个是正确的。
另一种方法是将此文件放在其自己的存储库中,并让所有三个项目将其作为git 子模块。不过,请确保您GIT_SUBMODULE_STRATEGY: recursive
为其定义,以便.gitlab-ci.yml
文件在运行 CI 之前始终更新。
有关更多详细信息,请参阅GitLab 使用 Git 子模块和 GitLab CI/CD文档。