1

我有一个 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()
    }
}

当我尝试在slave中执行我的管道时,我的问题出现了。在这种情况下,上面的负载会导致错误

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()
    }
}

这不是很有效,我不想只使用主节点来加载文件您对如何在从节点上加载 Groovy scipt 有任何建议吗?

谢谢

4

1 回答 1

-1

一、上面的错误java.io.IOException: java.io.FileNotFoundException: /var/lib/jenkins/utils/Utils.groovy (No such file or directory)是在slave上执行时尝试加载文件导致的节点。但是该文件存储在您的主节点中的 /var/lib/jenkins/utils/Utils.groovy 中,我猜这是另一台计算机和另一个文件系统。所以,这个错误是合乎逻辑的。

当您在另一个节点(计算机、服务器等)上执行一些管道操作并且想要加载文件时,您需要将其存储在该计算机(从属计算机)中并从那里加载它 - 所以路径必须符合到从属计算机中的文件位置。

所以,我建议:

  1. 只需将 Utils.groovy 文件存储在从机上并从那里加载它
  2. 将其加载到 master 上的工作区(就像您已经做过的那样)
  3. 此外,您可以在 github 中存储 groovy 文件代码并从那里加载它,而不依赖于主/从文件系统(我建议这个选项)
于 2017-04-27T16:11:52.170 回答