2017-07-28 180 views
1

我有一个复杂的乳胶定的以下目录组成的项目。Gitlab多项目CI

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

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

现在,我想使用gitlab-ci工具来构建每个PROJ * /。我知道我必须设置码头运动员,但是我的问题是如何使用多个存储库进行操作。我想建立这些书籍,不仅在我承诺PORJ *时,而且在我承诺AUX或PACKAGE时。 我应该如何设置多项目CI?

注:当我编码一定PROJ /我所做的更改包装和AUX可能破坏其他书籍。我想,我可能涉及每个PROJ1,PROJ2,包与AUX,配置PACKAGE和AUX作为PROJ的子模块(这是我的理解是这样,我每本书链接到AUX和软件的特定版本)。使用子模块会更容易设置多项目Ci吗?以这种方式使用子模块是个好主意吗? (我知道使用子模块很容易犯错误)。

回答

1

你的问题实际上是两个部分。首先,如何创建多个git存储库并在其他人(书籍)中使用一个(共享代码)。其次,如果使用gitlab CI触发构建,以便更改任何回购协议。

第一部分是容易的,你需要一个包含共享代码(脚本,AUX,...),并为每本书包含书数据和共享回购作为一个子模块回购一个存储库。如果你不知道它们是什么,请参阅git submodules

这远远你已经解决了问题的一半。在Gitlab上,CI在使用git子模块时需要特定的设置,see here用于设置说明。这样可以建立每本书的回购。最后一步是设置共享回购以触发所有图书回购版的构建。这可以使用触发URL作为described here完成。