我有一组复杂的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?
注意:当我编写某个PROJ /我对PACKAGE和AUX进行了更改时可能会破坏其他书籍。我认为我可以将每个PROJ1,PROJ2与PACKAGES和AUX相关联,将PACKAGE和AUX配置为PROJ的子模块(我的理解是,通过这种方式,我将每本书链接到特定版本的AUX和PACKAGE)。使用子模块会更容易设置多项目Ci吗?以这种方式使用子模块是个好主意吗? (我知道使用子模块很容易出错。)
答案 0 :(得分:2)
你的问题实际上是两个部分。首先,如何创建多个git存储库并在其他存储库中使用一个(共享代码)(书籍)。其次如何使用gitlab CI在任何repos的情况下触发构建。
第一部分很简单,您需要一个包含共享代码(SCRIPTS,AUX,...)的存储库,并且每本书都包含一个包含书籍数据和共享存储库作为子模块的存储库。如果你不知道它们是什么,请参见git submodules。
到目前为止,你已经解决了一半问题。在Gitlab上,CI在使用git子模块时需要特定的设置,see here用于设置说明。这样就可以构建每个图书仓库。最后一步是设置共享仓库以触发所有图书回购的构建。这可以使用触发器URL described here完成。