当前位置: 首页 > 知识库问答 >
问题:

从詹金斯奴隶加载Groovy脚本

呼延凌
2023-03-14

我有一个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,您有什么建议吗?

非常感谢。

共有1个答案

麻茂材
2023-03-14

首先,上面的错误java。io。IOException:java。io。FileNotFoundException:/var/lib/jenkins/utils/utils。groovy(没有这样的文件或目录)是在从节点上执行时尝试加载文件时导致的。但该文件存储在/var/lib/jenkins/utils/utils中。groovy在主节点中,我想这是另一台计算机和另一个文件系统。所以,这个错误是合乎逻辑的。

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

因此,我建议:

  1. 只需存储util。从机上加载groovy文件
  2. 将其加载到master上的工作区(就像您已经做的那样)
  3. 此外,您可以将groovy文件代码存储在github中,并从那里加载它,而不依赖于主/从文件系统(我建议使用此选项)
 类似资料:
  • 我想在詹金斯增加一个奴隶。我遵循了https://wiki.jenkins-ci.org/display/jenkins/step+by+step+guide+to+set+up+master+和+slave+machines中的步骤。 有什么想法可能会出问题吗? 我检查过了,我确实有连接权限。

  • 问题内容: 我已经配置了一个jenkins ubuntu奴隶,我想在它上运行我的gradle构建(与gradle插件)。问题是,当运行詹金斯构建工作时,我得到: 在从属服务器(相同用户)的命令行上运行相同的gradle命令时,它将成功运行。 问题答案: 找到了解决方法!我已经开始使用gradle包装器来运行gradle构建。我做了两件事: 按照本页上的说明创建gradlew(和其他文件)并在我的存

  • 我有一个詹金斯大师,能够从CodeCommit中提取代码。我还设置了一个jenkins slave,这个项目有一个Dockerfile来构建一个图像。当我尝试执行shell命令时, 我得到以下错误:

  • 我希望使用Jenkins创建一个CI/CD管道,其中我希望添加一个K8s主节点作为Jenkins主设置的从节点。我的问题是这是个好主意吗?我计划在其中一个主服务器上创建一个用户名Jenkins,将kubeconfig复制给用户,将主服务器连接到这个节点,然后从这个节点运行所有的Kubernetes部署。 有没有更好的办法做到这一点?

  • 对于实际的JNLP连接,如何强制jenkins从机通过其run命令连接到内部主机名? null

  • 经过阅读,我明白了我必须有一个Jenkins主机在场,才能通过Git网络钩子在OpenShift上产生一个Jen金斯奴隶。但是有没有办法在没有詹金斯主人的情况下产生詹金斯奴隶呢? 非常感谢大家!