使用 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
。这可能是问题所在吗?
如果这不起作用,您可能想要升级您的管道插件版本。
我正在为 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
。这可能是问题所在吗?
如果这不起作用,您可能想要升级您的管道插件版本。