复制文物来自"孙子"詹金斯乔布斯

时间:2016-08-09 23:46:49

标签: jenkins build jenkins-plugins

我目前刚接触Jenkins并且有一种情况,我希望通过以下流程创建一组Jenkins作业:

A - > B - > ç

为了给你上下文,我有一个Job A(设计为初始化器,用于在一个工件中同时获取作业B和C的结果),作业B(获取作业C,CSS和JS文件和构建的结果)将它们转换为war文件,包含其他必需文件)和Job C(为特定客户构建缩小的CSS和JS文件。每个构建将作为参数传递给不同的客户)

通常我可以使用参数化触发器,复制工件和构建名称设置器我可以运行作业A触发作业B,然后触发作业C,作业B和C的输出将是后续的输出上游工作。所以理论上最后在Job A中我会收到Job B.的输出。

我在构建A中尝试插入$ {TRIGGERED_BUILD_NUMBER_JOB_C},当我们在“特定构建”下复制作业C的工件时。但是,复制工件插件的错误是:

  

从" JOB_B"复制了1个工件。内部编号15错误:无法执行   从以下位置找到工件副本的构建:JOB_C

我已经看到了复制工件插件下的其他设置,例如"下游构建"或者"上游是"但是我不确定他们做什么的具体细节,或者这些是否能达到我所需要的设置。

此外,我可以完成“最后一次成功构建”#39;但是,在Job C上,我担心如果有多个人在接近同一时间运行作业C,他们最终会得到错误的构建,因为每个CSS和JS构建都可以用于不同的客户。

所以我不想继续敲我的脑袋,我想知道这是可能的,我需要采取什么步骤来实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:0)

从我收集的内容来看,Job A应该是最后一个流程,因为它的工作是从B和C中获取工件并发布它们?即使它确实执行了类似设置/初始化的操作,也许您可​​以将作业A拆分为2个作业(一个用于初始化,另一个用于发布)。也许是这样的:

作业D(初始化) - >工作B - >工作C - >工作A(发布)

这将使其更加线性,而不是必须在最后进行连接。

关于从Job B和Job C获取工件的问题,您可以使用Build Flow Plugin编写dsl。然后,您可以将作业B和作业C的内部版本号传入作业A,并使用复制工件插件将它们复制到工作区中。

例如:

jobB = build( "jobB" )
jobC = build( "jobC" )
build( "jobA", param1: jobB.build.number, param2: jobC.build.number )