从join-Jenkins的多个上游作业复制工件

从join-Jenkins的多个上游作业复制工件,join,jenkins,Join,Jenkins,是否可能有一个Jenkins作业被来自多个上游作业的连接插件复制工件触发 我正在尝试用一个“菱形”作业设置Jenkins配置:我的触发器运行并生成两个作业,my-fork1和my-fork2,它们可以同时运行并花费不同的时间,而Join插件会在两个Fork完成后启动作业my-Join 我的触发器、my-fork1和my-fork2中的每一个都会创建和指纹工件(例如,文本文件) 我想使用“从另一个项目复制工件”工具,将“哪个构建”参数设置为“触发此作业的上游构建”,从联接中的每个上游作业复制工件。

是否可能有一个Jenkins作业被来自多个上游作业的连接插件复制工件触发

我正在尝试用一个“菱形”作业设置Jenkins配置:我的触发器运行并生成两个作业,my-fork1和my-fork2,它们可以同时运行并花费不同的时间,而Join插件会在两个Fork完成后启动作业my-Join

我的触发器、my-fork1和my-fork2中的每一个都会创建和指纹工件(例如,文本文件)

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

在工作区/path/to/workspace/my join中的生成计算机上远程生成

从63号“我的触发器”版本复制了1个工件

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

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

工作失败了。在本例中,my-fork2首先完成,因此my-fork1触发了连接步骤。我相信这意味着我的加入只记录了my-fork1和我的触发器是上游的。如果my-fork1首先完成,那么my-fork2将启动连接,并且在尝试从my-fork1复制时作业将失败

如果我更改配置以从构建“最新成功构建”复制工件,则构建成功,但我的触发器可能会连续运行多次,因此不能保证我的加入是加入相关工件

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

注意:第二点似乎是问同样的问题,但唯一的答案并没有解决它,并且已经被接受

谢谢
tensorproduct

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


我工作的地方也有类似的情况;连接菱形的多个同时运行。构建中的参数允许下游作业从上游作业获取正确的工件。

Jason Swager提供的解决方案的逐步设置:

项目依赖关系: 钻石->叉子->钻石准备好了吗

“fork”项目: 字符串参数“UNIQUE_ID”(仅在内部未使用伪值) (创建工件并归档工件)

“钻石准备就绪”项目 字符串参数:唯一的\u ID 从另一个项目复制工件 项目名称:fork 参数筛选器:UNIQUE_ID=${UNIQUE_ID}

“钻石”项目: 在其他项目上触发参数化生成 要构建的项目:fork 预定义参数:UNIQUE_ID=${BUILD_TAG} 加入触发器: 加入后操作: 在其他项目上触发参数化生成 要建设的项目:diamond_ready
预定义的生成器参数:UNIQUE_ID=${BUILD_TAG}

是的,谢谢。最后,我使用了触发构建的BUILD_标记来设置所有下游构建的唯一_ID参数,并将其用作连接步骤的标识标记。您能否提供要使用的确切字符串来实现这一点?我遇到了问题…我担心我不再在我安装这个补丁的地方工作了,所以我手头没有确切的字符串。尽我所能,我使用参数化触发器插件启动了下游构建。我使用
UNIQUE\u ID=${BUILD\u TAG}
手动设置了一个参数。然后,在JoinBuild中,正如Jason所建议的,我使用了CopyArtifact插件。确保选择“上次成功构建”并指定
UNIQUE\u ID=${UNIQUE\u ID}
(尽管我记不起进入的字段的名称),这一点很重要。该字段将是“参数过滤器”。