2017-10-20 190 views
0

情況...Jenkins管道:如何將它們與Git一起使用,特別是使用多個Git倉庫?

我有幾個Git倉庫,這些都是我的構建所需要的。我正在積極開發代碼,其他代碼包含我使用的庫代碼。由於每個回購都是獨立的,當然它們都有不同的分支名稱。

對於我的Jenkins構建,我想從每個回購中獲取相關版本的代碼,將它們放在正確的子目錄中,並構建我的項目。理想情況下,我也應該能夠做一個淺層克隆(因爲這些回購中的一個很大),並且能夠僅對我想要的路徑進行稀疏結算。

Multiple SCMs plugin似乎是這份工作的理想工具。然而,它並沒有積極發展,而且我看到它引發了其他人討論過的斷言。

我見過this question它回答瞭如何使用Jenkins管道來做到這一點,所以我調查了Jenkins管道。我很快從Git Pipeline documentation中發現,它對Git的支持最可能被描述爲「最小化」,這一說法對於Pipeline概念的其餘部分同樣適用。 (而這就是我們進入夢魘之前,用純文本界面取代一個完美可行的用戶界面。維護噩夢,很多?呃!)

我也可以設置Git子項目。我寧願不必爲了解決最新版本Jenkins的不足而採用這條路線,但是如果它是唯一的解決方案,就必須有這個必要。

我會說Jenkins以外的解決方案並不是真正的選擇,因爲我們在公司中一直在使用Jenkins一段時間,而且我們並不想真的需要設置其他的東西。

回答

0

我認爲Pipeline中的git支持並不缺乏。至少不再是。而且管道非常強大。當然不是最小的。也許你正在看舊的文檔。聲明式管道可能仍然有點不成熟,但仍然非常強大和簡單,通常是我的默認選擇,除非我需要更加瘋狂。

您爲git構建步驟發佈的文檔只是checkout scm步驟的包裝,可用於非常簡單的git操作。這當然不是在Jenkins中使用git的可用選項的範圍。

特別是,我有一個多分支管道工作,看着一個git回購。當檢測到更改時,將回購庫下拉,然後將另一個回購庫的稀疏檢出拉入子目錄,然後將另一個完整的回購庫下拉到另一個目錄中。我運行一些構建腳本。壓縮一些東西,部署壓縮文件,然後運行一些遠程ssh進程來處理遠程服務器上的軟件包。

在聲明管線我的稀疏結賬做到這一點:

dir("package/infra") { 
    deleteDir() //start with a clean directory 

    checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [[$class: 'SparceCheckoutPaths', sparseCheckoutPaths: [[path: "my/path/here"]]]], userRemoteConfigs: [[credentialsId: 'asdf-fdsa-werw5-asjksadf-wlfjsdf', url: '[email protected]:ABC/DEF.git']]]) 

} 

你也可以做淺層克隆和複雜的混帳行爲的所有方式。

對於您的庫,您可能會更好一些,並將構建的構件存儲在artifactory中,或者將它們存檔在Jenkins中。然後從artifactory中引入工件或使用副本Artifacts插件。帶他們從另一份工作。但每種情況都不一樣。

+0

感謝羅布。所以問題不在於插件可以做什麼,而是文檔。:/我會繼續挖掘。 – Graham