在使用jenkins执行自动化脚本,因为用例过多,所以决定并行job执行来提高效率,当然这个在之前的一篇文件介绍就可以做到,先配置一个job_A,然后用job_B触发两个下游job来实现并行。一开始我也是这样设计的,后面出现了问题,因为我需要把并行执行的结果合并,这个合并需要在两个并行job执行后来完成,所以就卡在这里。后来经过google查询,了解到jenkins的另一个插件可以完成这个操作。

1.再次说明下想做的事情
(1)A、B两个job并行执行用例
(2)执行完后合并A、B的结果,生成报告

2.JOIN Plugin

这个插件作用主要是会让整个job的下游job全部完成后再执行。所以场景为A、B、C、D四个job,A的下游为B、C,然后A设置的join trigger为D,这样D会等B、C两个job完成再运行D而达到效果。

A:设置两个下游B、C,设置join trigger为D(图中的RFS_C)

jenkins 按照先后顺序执行多个job jenkins并行_Arc


B:运行部分用例,设置Archive the artifacts把结果文件传递

C:运行部分用例,设置Archive the artifacts把结果文件传递

D:把B、C的结果文件放在workspace中,合并结果集

注:

使用上述方法后,发现D也变成了A的下游项目,造成结果是,BCD三个同时运行了,而不是BC运行完才运行D。

调整为:将Join Trigger删除

在D项目配置的构建触发器中勾选Build after other projects are build,这样D就是BC(图中的Test1)的下游了,而不是A的下游。构建顺序就是A --> B+C -->D

jenkins 按照先后顺序执行多个job jenkins并行_用例_02

还有一种是触发下游项目并且可以传参

配置上游项目

1.job中配置增加后构建操作步骤,点击如下红框(这个选项是需要装插件的,插件名貌似是Parameterized Trigger plugin)

jenkins 按照先后顺序执行多个job jenkins并行_用例_03


2.配置触发策略,填写触发的job name,何时触发(成功,失败,稳定,不稳定等),

jenkins 按照先后顺序执行多个job jenkins并行_Arc_04


3.配置传递的参数 如下图:将本项目总的BUILD_TAG传递到了test项目中的publish_build_tag,等

jenkins 按照先后顺序执行多个job jenkins并行_Arc_05


下游项目简单配置

1.新建个test项目,把上游项目传递的参数全部加上,并不设默认值

jenkins 按照先后顺序执行多个job jenkins并行_Jenkins_06


2.在execute shell中打印这些参数的值

jenkins 按照先后顺序执行多个job jenkins并行_Jenkins_07


构建test1项目测试是否触发test项目并传递参数

触发test1项目

jenkins 按照先后顺序执行多个job jenkins并行_并行执行_08


test项目被触发

jenkins 按照先后顺序执行多个job jenkins并行_Arc_09


jenkins 按照先后顺序执行多个job jenkins并行_Arc_10


jenkins 按照先后顺序执行多个job jenkins并行_并行执行_11