Jenkins:在MultiJob中共享变量

Lig*_*gio 8 parameter-passing jenkins

我正在使用Jenkins进行测试/构建,因此我使用此配置创建了一个MultiJob项目:

  1. 测试工作
  2. 建立工作
  3. 安装工作

MultiJob是从Master Jenkins启动的,但其他工作是从其他节点启动的.Build Job执行一个创建BUILD_ID的shell脚本.现在,我希望将BUILD_ID作为参数传递给Install Job.我怎样才能做到这一点?我唯一的选择是使用属性文件?

非常感谢

小智 7

该问题询问如何在MultiJob项目的作业之间传递值,而不是参数化触发器.参数化触发器可能不是一个好的解决方案,因为下游作业将在MultiJob父级的范围之外执行.要在MultiJob子作业之间传递变量,

  1. 将变量写入第一个子作业中的属性文件
  2. "将工件存档"作为第一个子作业中的构建后操作
  3. 在第一个和第二个子作业之间插入"从另一个项目复制工件"构建.将Project Name设置为您的第一个子作业的名称,以及将Build构建为"由当前MultiJob构建触发的构建".在"要复制的工件"中添加属性文件.
  4. 在第二个子作业中,在"高级..."下,从属性文件中添加参数 - >参数,然后在那里输入属性文件名.您的第二阶段现在将从第一阶段传递变量.


sat*_*enu 6

您可以在多作业阶段BUILD_ID使用“ 预定义参数”选项来传递参数。

步骤如下:

  • 通过单击您的多作业的“ 配置”链接转到“配置”页面
  • 单击要传递参数的作业的“ 高级”按钮
  • 单击添加参数,选择预定义参数。然后创建您自己选择的参数名称并将其分配BUILD_ID给它;
  • 通过启用要在其中接收定义的参数的下游作业中的“ 此构建为参数化”选项来创建相同的参数。然后,您可以在脚本中使用相同的代码


Tec*_*ext 3

要使用我将要描述的建议,您将需要参数化触发器插件。将自定义参数传递到下游作业的一种方法是将键值对 ( ) 存储在文件中,并通过在调用下游(在本例中为作业 B)作业时key=value选择选项来指定同一文件。Parameters from properties file请参考下面的截图:

在此输入图像描述

现在您可以使用 访问下游作业“B”中的变量$BUILD_ID。您还想启用该选项Don't trigger if any files are missing

  • 我看到这是被接受的答案,但它真的回答了问题吗?我的情况与 @Ligio 完全相同,它是一个 **MultiJob** 并且需要将参数从 _build_ 传递到 _deploy_ 作业。值来自 _build_ 作业,但 _deploy_ 作业 **不是 _build_ 作业的下游** 作业。它们确实按顺序运行,但作为父 **MultiJob** 的阶段。而且,它们运行在不同的从机上。我看不出这个解决方案如何运作。任何提示将不胜感激。[看起来像这样。](https://s21.postimg.org/x82wux0qv/multijob.png) (7认同)