2017-08-02 80 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()