从Jenkins Slave加载Groovy脚本

u3r8eeie  于 6个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(76)

我有一个Jenkins管道,它加载了一个像这样的groovy实用程序脚本:

Utils = load('/var/lib/jenkins/utils/Utils.groovy')

字符串
当我在master节点上执行管道时,一切都很好。在这种情况下,我可以在管道中使用类Utils中的方法。

node('master'){
    stage('stage1'){
        def Utils = load('/var/lib/jenkins/utils/Utils.groovy')
        Utils.doSomething()
    }
}


当我尝试在一个slave中执行我的管道时,我的问题出现了。
第一个月
为了避免这个错误,在管道中,我像这样在主节点中加载文件

node('master'){
    stage('stage1'){
        Utils = load('/var/lib/jenkins/utils/Utils.groovy')
    }
}
node(){
    stage('stage2'){
        Utils.doSomething()
    }
}


这不是很有效,我不想使用主节点来加载文件。你有什么关于如何在从节点上加载Groovy脚本的建议吗?

lnlaulya

lnlaulya1#

首先,上面的错误 java.io.IOException:java.io.FileNotFoundException:/var/lib/jenkins/utils/Utils.groovy(No such file or directory) 是在从节点上执行时试图加载文件时引起的。但是文件存储在主节点的/var/lib/jenkins/utils/Utils.groovy中,我猜这是另一台计算机和另一个文件系统。所以,错误是合乎逻辑的。
当您在另一个节点(计算机,服务器等)上执行一些管道操作时,并且您想要加载文件,您需要将其存储在该计算机(从属计算机)中并从那里加载它-因此路径必须根据从属计算机中的文件位置。
因此,我建议:
1.只需将Utils.groovy文件存储在从机上并从那里加载它
1.将其加载到master上的工作区(就像你已经做的那样)
1.此外,你可以将groovy文件代码存储在github中,并从那里加载它,而不依赖于主/从文件系统(我建议使用此选项)。

相关问题