Jenkins groovy 文件无法导入另一个 groovy

Jenkins groovy file can't import another groovy

在简单的形式中,我在 /jenkins 子文件夹的 repo 中有 2 个 groovy 文件。文件 A.groovy 和 B.groovy。里面A.groovy我有一个载重线

load(env.WORKSPACE + "@script/jenkins/B.groovy")

问题是我得到一个错误

java.nio.file.NoSuchFileException:
/Users/user/.jenkins/workspace/JobName@script/jenkins/B.groovy

但正如我们所见,总体看起来创建的加载函数几乎是正确的 url。重点是我实际获取的回购协议,特别是 A.groovy 正在进入附加子文件夹。我在日志的最开头看到了这一点,并且可以在本地找到。

Checking out git ... into /Users/user/.jenkins/workspace/JobName@script/ecb7a9317b1ad672698830264d9e0ce2b9b6f330c043bb85f48623f3cdcab65e/jenkins/A.groovy

尝试使用 echo sh(script: 'env|sort', returnStdout: true) 记录整个 env 对象,但根本没有 属性 包含该子文件夹名称。

为什么我会得到那个额外的 ecb7a9317b1ad672693830224d9e0ce2b9b3f730c043bb85f48925f3cdcab65e 子文件夹,我怎样才能摆脱它或以某种方式获取它的名称来为导入编写正确的 url?

我找到了解决方法(通过搜索文件夹),但我想找到更好的本机方法。

其中 -name 'jenkins' 中的 jenkins 是包含 groovy 个脚本的子文件夹名称。

git_jenkins_folder = sh (
        script: "find \"" + WORKSPACE + "\"@script -type d -name 'jenkins'",
        returnStdout: true
    ).trim()

utils = load("$git_jenkins_folder/Utils.groovy")

这样生成正确的工作路径。

/Users/user/.jenkins/workspace/JobName@script/ecb7a9317b1ad672698830264d9e0ce2b9b6f330c043bb85f48623f3cdcab65e/jenkins

我认为问题出在您传递给 load 的路径上。 env.WORKSPACE 不以 / 结尾。

load("${env.WORKSPACE}/@script/jenkins/B.groovy")