如何管理(读取和写入)管道和共享库之间的变量值?

问题描述 投票:0回答:1

我的声明式管道的大小正在增加,因此我想使用共享库来拆分逻辑。 但我面临着一些问题,因为我必须在他们之间分享一些价值观,但我找不到方法来做到这一点。 以下是我需要做的一些示例:

  1. 我的 git 存储库中有不同的分支以及作业可以工作的不同环境,因此我有几个根据当前执行要求动态填充的变量,以存储正确的分支名称、服务器名称……我需要公开该信息与库方法一起在正确的目标中执行逻辑。
  2. 我还需要库方法可以更改一些管道变量值以反映在这些方法中完成的不同操作的结果。例如:允许管道中的未来操作了解哪些特定组件受到影响。

有什么办法可以解决这个问题吗?我确信一定有一些东西,因为全局/局部变量范围是编码的基础,但我找不到任何东西。

我尝试使用环境变量,但它们只能写在环境子句中。我知道您可以使用 withEnv 或其他环境子句更改它们,但您无法更改值并在不同位置访问新值,因此它们更像是可以在它们填充的代码段中使用的常量。 因此,我可以访问环境变量及其定义时的值,但我无法根据当前执行条件更改该值(例如:是否必须在分支 A 或 B 中执行)。

jenkins jenkins-pipeline jenkins-groovy
1个回答
0
投票

在 Jenkins 中创建库与使用任何其他语言创建库没有什么不同。库方法将无法访问管道的范围,除非您将变量作为参数传递,并且您想要更改的任何内容都应该从库方法返回并在管道中分配。

env
是一种对所有人免费的全局作用域,这正是您不应该 以这种方式使用它的原因。但 Jenkins 中没有任何东西可以阻止你。

© www.soinside.com 2019 - 2024. All rights reserved.