2017-07-28 142 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完成。