2017-08-02 77 views
0

目前我有一個「全包」jenkinsfile其中包含各種功能。 爲了在其他jenkins文件中重用這些函數,我想將它們放入單獨的groovy腳本中,並從jenkins文件中加載它們。從jenkinsfile加載的groovy腳本未找到

scmHandler.groovy:

#!groovy 
def handleCheckout() { 
    if (env.gitlabMergeRequestId) { 
     echo 'Merge request detected. Merging...' 
    } 
    ... 
} 
return this; 

jenkinsfile我做的:

... def scmHandler = load ("test/scmHandler.groovy") scmHandler.handleCheckout()

我試圖按照從here指示,但詹金斯不停地抱怨,有沒有這樣的文件scmHandler.groovy的我得到:

java.io.FileNotFoundException: d:\jenkins\workspace\myJenkinsJob\test\scmHandler.groovy

兩個jenkinsfile和scmHandler.groovy駐留在test/子目錄中的項目的git倉庫工作區來boild,並在主正確簽出:

/var/lib/jenkins/jobs/myJenkinsJob/[email protected]/test/scmHandler.groovy 

但是我無法找到他們的奴隸jenkins文件執行node {}內的構建步驟的節點。在那裏,我只看到jenkins文件的舊版本,因爲(分離)結帳步驟尚未執行。

如何正確訪問handleCheckout.groovy?我在這裏錯過什麼?

其實我發現這是一個很好的方式來「包括」外部groovy文件,而不使用單獨的庫。

回答

0

使用checkout scm加載scmHandler.groovy

checkout scm 
def scmHandler = load ("test/scmHandler.groovy") 
scmHandler.handleCheckout()