1

我正在为 Jenkins 管道设置一个共享库,并试图弄清楚如何将共享库中的类导入到我正在编写的自定义步骤中。

目录结构如下所示:

src
--jenny
----util
------Versioning.groovy
vars
--calculateVersion.groovy

Versioning.groovy 文件定义了一些静态辅助方法来做一些事情。

package jenny.util
class Versioner implements Serializable {
    static bool checkForValidVersion(version) {
        return true
    }
}

我想从这样的地方调用这个方法calculateVersion.groovy

def call(version) {
    return jenny.util.Versioner.checkForValidVersion(version)
}

这样我的声明性管道就可以调用: def valid = calculateVersion "1.0.0"

但我收到此错误No such property: jenny for class: calculateReleaseVersions

是否可以从 vars 中的文件中引用共享库中的类来定义自定义步骤,这是如何完成的?

4

1 回答 1

3

对的,这是可能的。至少对我们来说:

就像在普通的 java(或 groovy)中一样,我们将 import 语句放入vars. 在你的情况下,这将是这样的:

import jenny.util.Versioner

def call(version) {
    return Versioner.checkForValidVersion(version)
}

我刚刚发现的另一件事:看起来类的文件名与Versioner类名不匹配:Versioning.groovy. 这可能是问题吗?

如果这不起作用,您可能想要升级您的管道插件版本。

于 2018-02-15T18:49:21.303 回答