小编典典

在Jenkins中从多个上游作业复制工件

jenkins

是否可以通过多个上游作业的Join插件复制工件触发Jenkins作业?

我正在尝试使用“钻石”作业来设置Jenkins配置:my-trigger运行并产生两个作业,my-fork1和my-
fork2,它们可以同时运行并且花费不同的时间,并且Join一旦两个分支完成,插件就会启动作业my-join。

my-trigger,my-fork1和my-fork2中的每一个都创建并指纹工件(例如,文本文件)。

我想使用“从另一个项目复制工件”工具,并将“哪个构建”参数设置为“触发此作业的上游构建”,从my-join中复制每个上游作业的工件。但是,我在my-
join控制台中看到这样的输出:

在工作区/ path / to / workspace / my-join中的构建机器上远程构建

从“ my-trigger”内部版本号63复制了1个工件

从“ my-fork1”内部版本号63复制的1个工件

无法从以下位置找到工件副本的构建:my-fork2

而工作失败。在这种情况下,my-fork2首先完成,因此my-fork1触发了加入步骤。我认为这意味着my-join仅记录了my-fork1和my-
trigger作为上游记录。如果my-fork1首先完成,则my-fork2将启动连接,并且在尝试从my-fork1复制时作业将失败。

如果更改配置以从构建“最新成功的构建”中复制工件,则构建成功,但是my-trigger可能连续运行很多次,因此无法保证my-join将加入相关的工件。

如何获得连接步骤以从多个上游分支复制工件?

注意:这个问题的第二点似乎是在问同样的事情,但是唯一的答案没有解决,已经被接受。

感谢tensorproduct


阅读 374

收藏
2020-07-25

共1个答案

小编典典

如果对每次运行的钻石都用唯一的参数对内部版本进行参数化,则可以在CopyArtifact插件中使用该参数来确定要从哪个内部版本进行复制。您需要指定“最新成功构建”,并使用参数和值对其进行限定。

我工作时也有类似情况。联接钻石的多个同时运行。构建中的参数允许下游作业从上游作业中获取正确的工件。

2020-07-25