使用 Jenkins 管道共享库的自定义步骤中的共享库 class

Using a shared library class from a custom step with Jenkins pipeline shared libraries

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

目录结构如下所示:

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 中的文件引用共享库中的 classes 来定义自定义步骤,这是如何完成的?

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

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

import jenny.util.Versioner

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

我刚刚发现的另一件事:class Versioner 的文件名似乎与 class 名称不匹配:Versioning.groovy。这可能是问题所在吗?

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