【问题标题】:Gitlab multi project CIGitlab多项目CI
【发布时间】:2017-07-28 09:09:21
【问题描述】:

我有一组复杂的 LaTeX 项目,由以下目录组成。

PACKAGE/
SCRIPTS/
AUX/
PROJ1/
PROJ2/
...

每个 PROJ1、PROJ2、...都是一本书。例如,要构建 PROJ1/,我在 SCRIPT 文件夹中有一组脚本。这些脚本将 AUX/ 文件夹中的一些文件复制到每个 PROJ1/ 文件夹中。应该存在 PACKAGE/ 文件夹来编译本书。 因此,对于 PACAKGE/ 中的文件,SCRIPTS/ 和 AUX/ 对每本书(PROJ1,PROJ2,...)都是通用的,但独立于它们。因此,我认为我必须将每个文件夹保存在单独的 git 存储库中。

现在,我想使用 gitlab-ci 工具来构建每个 PROJ*/.我知道我必须设置一个 docker runner,但我的问题是如何以我使用多个存储库的方式进行操作。我想编写这些书籍,不仅是在我致力于 PORJ* 时,而且在我致力于 AUX 或 PACKAGE 时也是如此。 我应该如何设置多项目 CI?

注意:当我编写某个项目时/我对 PACKAGE 和 AUX 进行了更改,这可能会破坏其他书籍。我认为我可以将每个 PROJ1、PROJ2 与 PACKAGES 和 AUX 相关联,将 PACKAGE 和 AUX 配置为 PROJ 的子模块(据我了解,通过这种方式我将每本书链接到 AUX 和 PACKAGE 的特定版本)。使用子模块会更容易设置多项目 Ci 吗?以这种方式使用子模块是个好主意吗? (我知道子模块很容易出错)。

【问题讨论】:

    标签: git continuous-integration gitlab


    【解决方案1】:

    您的问题实际上是两个部分。首先如何创建多个 git 存储库并在其他(书籍)中使用一个(共享代码)。其次,如何使用 gitlab CI 触发构建,以防任何 repos 发生变化。

    第一部分很简单,您需要一个包含共享代码(SCRIPTS、AUX、...)的存储库,并且每本书都有一个包含书籍数据和共享存储库作为子模块的存储库。如果您不知道它们是什么,请参阅git submodules

    到目前为止,您已经解决了一半的问题。在 Gitlab 上,CI 在使用 git 子模块时需要特定的设置,see here 用于设置说明。这样就可以构建每本书的 repo。最后一步是设置共享存储库以触发所有图书存储库的构建。这可以使用触发 URL 作为described here 来完成。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2021-12-21
      • 2020-06-21
      相关资源
      最近更新 更多