2017-05-09 69 views
2

我有結構化的這樣一個項目:我可以從Jenkinsfile的相對目錄中導入一個groovy腳本嗎?

/ 
/Jenkinsfile 
/build_tools/
      /pipeline.groovy # Functions which define the pipeline 
      /reporting.groovy # Other misc build reporting stuff 
      /dostuff.sh # A shell script used by the pipeline 
      /domorestuff.sh # Another pipeline supporting shell-script 

是否可以導入/ build_tools Groovy文件,這樣我可以用我的Jenkinsfile的2個文件裏的功能呢?

理想情況下,我想有一個詹金斯文件看起來是這樣的(僞):

from build_tools.pipeline import build_pipeline 
build_pipeline(project_name="my project", reporting_id=12345) 

我卡上的位是怎麼寫的工作相當於假裝import語句在我的僞代碼的第一行。

PS。爲什麼我這樣做:build_tools文件夾實際上是一個由許多項目共享的git子模塊。我試圖讓每個項目都有一套通用的構建工具來阻止每個項目維護人員重新發明這個輪子。

回答

3

加載共享groovy代碼的最佳方式是通過shared libraries

如果你有這樣一個共享庫:

simplest-jenkins-shared-library master % cat src/org/foo/Bar.groovy 
package org.foo; 

def awesomePrintingFunction() { 
    println "hello world" 
} 

它推到源頭控制,在詹金斯的工作進行配置,甚至全球範圍內(這是你能做的唯一的事情通過詹金斯時,UI一個在這個屏幕截圖使用管道),如:

tell jenkins about a shared library

,然後使用它,例如,像這樣:

當然,從控制檯日誌此版本

輸出將包括:

hello world 

有很多其他的方式來寫的共享庫(比如使用類),並使用它們(如定義瓦爾這樣你就可以以超級方式在Jenkinsfiles中使用它們)。您甚至可以將非常規文件作爲資源加載。查看the shared library docs這些擴展用例。

相關問題