目前我有一个"全包" jenkinsfile包含各种功能。 为了在其他jenkins文件中重用这些函数,我想将它们放入单独的groovy脚本中并从jenkins文件中加载它们。
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的说明操作,但jenkins经常抱怨我没有这样的档案scmHandler.groovy
:
java.io.FileNotFoundException: d:\jenkins\workspace\myJenkinsJob\test\scmHandler.groovy
jenkinsfile和scmHandler.groovy都驻留在项目的git仓库中工作区的test/
子目录中,并在master上正确检出:
/var/lib/jenkins/jobs/myJenkinsJob/workspace@script/test/scmHandler.groovy
但是我无法在jenkinsfile执行node {}
内的构建步骤的从节点上找到它们。在那里我只看到旧版本的jenkins文件,因为(分开的)结帐步骤尚未执行。
如何正确访问handleCheckout.groovy?我在这里想念什么?
实际上,我发现这是一个巧妙的方式来包括"包括"外部groovy文件,不使用单独的库。
答案 0 :(得分:0)
在加载checkout scm
scmHandler.groovy
checkout scm
def scmHandler = load ("test/scmHandler.groovy")
scmHandler.handleCheckout()