在多个子工作区/节点中的一个作业中使用和复制工件 - Jenkins

时间:2015-12-02 15:30:52

标签: jenkins continuous-integration artifacts


你好, 我们正在使用一个作业(B),在一个作业(B)中使用不同的参数调用另一个作业(C)3次。每个作业C运行用于具有不同参数的不同从站/节点。 作业B正在使用作业A中的一些工件,并且所有子作业(C)甚至应该使用这些工件。不幸的是,只有第一个触发的子作业(作业C#1)成为其本地工作空间文件夹中提供的工件。对于其他Job-C运行(#2和#3),不会复制工件。

架构:

Job A (creates the artifacts)
-->Job B (uses artifacts from A and triggers Job C, three times)
   --> Job C #1 --> use artifacts for node1
   --> Job C #2 --> should also use the artifacts on node2 (didnt work)
   --> Job C #2 --> should also use the artifacts on node3 (didnt work)

一种解决方案可以是为所有作业c节点配置一个组,并在触发器中使用“在标签中的所有节点上执行”。但我们需要用不同的参数调用Job-C。

谢谢Steffen

1 个答案:

答案 0 :(得分:2)

以下是包含Build Flow pluginNodeLabel parameter pluginCopy Artifact plugin的解决方案。

使用此解决方案,无需工作B.

作业A创建工件,无需更新此作业。

在作业C上,请这种参数(使用第二个插件):

enter image description here

请为您的工作C:

启用此选项

enter image description here

添加构建步骤以复制作业A:

中的人工制品

enter image description here

接下来,使用此流程创建新的构建流程作业:

build("Bruno job A")
parallel (
  { build("Bruno job C", NODE_NAME: "jenkins-centos-slave-01") },
  { build("Bruno job C", NODE_NAME: "jenkins-centos-slave-02") },
  { build("Bruno job C", NODE_NAME: "jenkins-centos-slave-03") }
)   

并行块将在3个不同的从站上启动3次作业C.

enter image description here

我们可以检查相关节点上是否已执行了3个作业:

enter image description here

enter image description here

enter image description here

他们都得到了工作中的人工制品A :))