【问题标题】:Loading groovy script from jenkins slave从 jenkins slave 加载 groovy 脚本
【发布时间】:2017-04-27 15:03:31
【问题描述】:

我有一个 jenkins 管道,它可以像这样加载一个 groovy 实用程序脚本:

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

当我在 ma​​ster 节点上执行管道时,一切都很好。在这种情况下,我可以在管道中使用我的类 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()
    }
}

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

谢谢

【问题讨论】:

    标签: jenkins groovy jenkins-pipeline jenkins-slave


    【解决方案1】:

    首先,上面的错误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 文件存储在从机上并从 那里
    2. 将其加载到 master 上的工作区(就像您已经完成的那样)
    3. 另外,您可以将 groovy 文件代码存储在 github 中并从 不依赖于主/从文件系统(我建议这个选项)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多