首页 > 解决方案 > Jenkins 管道 - 全局(非环境)属性

问题描述

我目前正在 Jenkins 中开发一个相当复杂的脚本化管道,并且在构建工作中我需要一些值。我尝试将它们保存到环境变量中,例如env.MY_VAR = 'foo'.

但是,这仅限于标量值,我还需要存储一些结构化数据,主要是小列表和地图。我知道我可以根据需要对它们进行序列化/反序列化,但我不想这样做。

除了使用全局变量之外,还有什么(更好的)方法可以实现这一点?Jenkins 对象是否提供任何方法来做类似的事情currentBuild.myCustomVars.add('myVar','foo')

标签: jenkinsjenkins-pipeline

解决方案


更好的方法可能是使用共享库来实现这一点(请参阅“使用共享库扩展”。例如,您可以简单地将一个MapinMyMap放入共享库中并将其导入到您的管道中,如下所示:

@Library('somelib')
import com.mycorp.pipeline.complextypes.MyMap

这有点复杂,我个人宁愿摆脱复杂类型或使用全局变量,但如果您需要的不仅仅是泛型Map,那么它可能值得付出努力。


推荐阅读