Git - 更新多个项目中的文件并推送到单独的存储库?

Git - 更新多个项目中的文件并推送到单独的存储库?

我有以下设置:

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文档。

相关内容