[英]Can I persist state between Jenkins shared library calls?
我想在我的 Jenkins 共享库中保留调用之间的某些逻辑状态。 我不想在参数中传递带有状态的对象/映射/...,而是为此使用某种全局变量/映射。 我在下面的 foobar.groovy 中使用全局变量或使用环境变量失败。 我通过创建一个带有静态映射的小型辅助类来存储我的数据找到了一种解决方法,但这似乎不是正确的解决方案。 有更干净的方法吗?
src/pkg/GlobalConfig.groovy
package pkg;
class GlobalConfig {
// define a static map
static Map data = new HashMap()
}
在共享库中使用映射,例如 vars/foobar.groovy
import pkg.GlobalConfig
def do_something() {
def data = pkg.GlobalConfig.data
// do something with data
}
使用@groovy.transform.Field
注释定义全局变量。
查看管道文档中的定义全局变量部分。
foobar.groovy
看起来像:
import groovy.transform.Field
@Field
def data = [:]
def do_something() {
// use data as is
}
在这个文件之外,只需使用foobar.data
。
加载库后,无论何时使用它,状态都将是持久的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.