我有一个jenkins管道,它加载一个像这样的groovy实用程序脚本:
Utils = load('/var/lib/jenkins/utils/Utils.groovy')
当我在主节点上执行管道时,一切都很好。在这种情况下,我可以在管道中使用我的类Utils中的方法。
node('master'){
stage('stage1'){
def Utils = load('/var/lib/jenkins/utils/Utils.groovy')
Utils.doSomething()
}
}
当我尝试在奴隶中执行我的管道时出现了问题。在这种情况下,上面的负载会导致错误
java.io.IOException:java.io.FileNotFoundException:/var/lib/jenkins/utils/Utils.groovy(没有这样的文件或目录)
为避免此错误,在管道中,我将文件加载到主节点中,如下所示
node('master'){
stage('stage1'){
Utils = load('/var/lib/jenkins/utils/Utils.groovy')
}
}
node(){
stage('stage2'){
Utils.doSomething()
}
}
这不是很有效,我不想仅仅使用master来加载文件 您对如何在从属节点上加载Groovy scipt有任何建议吗?
谢谢
答案 0 :(得分:-1)
首先,上面的错误 java.io.IOException:java.io.FileNotFoundException:/var/lib/jenkins/utils/Utils.groovy(没有这样的文件或目录)是你造成的尝试在从属节点上执行时加载文件。但是这个文件存储在主节点中的/var/lib/jenkins/utils/Utils.groovy中,我想这是另一台计算机和另一个文件系统。所以,这个错误是合乎逻辑的。
当您在另一个节点(计算机,服务器等)上执行某些管道操作,并且您想要加载该文件时,您需要将其存储在该计算机(从属)中并从那里加载它 - 所以路径有根据从属计算机中的文件位置。
所以,我建议: