2016-08-18 84 views
3

我們剛剛開始使用Jenkins多分支管道。我喜歡詹金斯在創建新分支時自動創建新Jenkins作業的想法。它將確保所有可發佈的開發工作都在Jenkins中進行。我們有大約40或50個項目在幾乎每個版本中都會分支,每次分支時創建40個左右的作業都是容易出錯的工作。Jenkins多分支管道 - 將另一個腳本放入本地Jenkins文件

但是,我看到有兩種類型的管道建立在詹金斯:

  • 普通管道建立:你在你的詹金斯作業指定位置和分支。但是,您可以指定是要在Jenkins作業配置中使用腳本還是使用源代碼庫中的腳本。這將使我們能夠爲我們的所有工作維持一個單一的Jenkinsfile。如果我們在構建過程中改變某些東西,我們只需編輯一個Jenkins文件。

  • 多分支管道建立:當創建新分支時,詹金斯將自動爲您創建一個新的Jenkins作業。這意味着我們不再需要在發生新分支時創建許多新的Jenkins項目。但是,它看起來像Jenkinsfile必須位於項目的根目錄。如果您在構建過程中進行了基本更改,則必須更新所有Jenkins項目。

我希望能夠利用多分支管道建設,但我想要麼指定從我們的倉庫拉起Jenkinsfile,或包括從存儲庫URL主Jenkinsfile

有沒有辦法與詹金斯多分支管道做到這一點?

回答

3

如果您在repos之間有共同的構建邏輯,那麼可以將大部分管道邏輯移動到單獨的groovy腳本中。這個腳本可以在任何Jenkinsfile中被引用。 這可以通過檢查repo的另一個結賬來完成,即groovy腳本進入另一個目錄,然後執行標準groovy加載,或者,更好的方法是將其作爲groovy腳本存儲在Jenkins全局腳本中圖書館 - 這本質上是Jenkins 內部的自包含git回購(有關更多詳細信息,請參閱https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/README.md)。

我們有一個類似的需求,並在一個腳本中創建了一個全局groovy方法,該腳本在Git中維護並在其更改後部署到/ vars /下的Jenkins'全局腳本庫中: 腳本 'scriptName.groovy' 有

def someMethod(){ 
    //some build logic 
    stage 'Some Stage' 
    node(){ 
    //do something 
    } 
} 

這樣的常見功能可以在任何Jenkinsfile通過

scriptName.methodName() 
+0

沒錯被調用,看看[這個答案](HTTP://計算器。 com/questions/36727721/jenkinsfile-and-different-strategies-for-branches/42653451#42653451)以獲取更多示例。 – rbellamy

+0

另外,如果您提供方法名稱「call」,則可以使用腳本文件名稱進行調用。所以,如果你有一個文件/vars/scriptName.groovy,你會用它像scriptName() – 0neel

+0

而且不要錯過這個鏈接https://jenkins.io/doc/book/pipeline/shared-libraries/ – 0neel