我正在测试Jenkins以查看它是否适合我们的构建和测试框架。我发现詹金斯及其可用插件适合我们的大部分需求。除了我似乎无法找到如何执行某种特定任务的帮助。如何与詹金斯并行多次运行相同的工作?
我们正在为嵌入式设备创建应用程序。我们有100个需要在这些设备上运行的测试。如果我们在构建完成后在一台设备上运行所有测试,则需要几个小时才能获得结果。但是,如果我们在100个并行设备上运行测试,那么我们可以在更短的时间内获得结果。
所有的测试都有非常相似的起点。使用设备的IP地址来运行测试脚本,并使用用户名/ pw调用测试脚本。该脚本将在设备上进行必要的测试,并为每个测试项目报告回传/失败。
我觉得这样的长/痛苦的方式是写在詹金斯100个职位,每个将是一个不同的测试脚本直接(与上述参数)和并行使用可用的插件运行这些。然而,从长远来看,保持所有这些工作将非常困难。
因此,更好的方法是创建一个可以带参数的Job(我们称之为child_tester),例如:测试脚本名称,设备的IP地址,用户名/ pw等等。然后使用另一个作业(让我们称之为mother_tester)用不同的IP地址调用child_tester作业100次并且并行运行它们。我需要一些方法来累积child_tester作业的每个单独运行的所有测试结果,并将它们报告给mother_tester。
我的问题是有一个插件或在詹金斯完成此任何方式?我查看了名为“Build Flow”,“Parallel Test Executor”和“Parameterized Trigger”的插件信息。但是,他们似乎不符合我的需求。
谢谢你的帮助。
当并行运行相同的作业名称时,构建流程插件不起作用。例如,我的生成流看起来像这样: 平行( {建立( “FreestyleTest1”)}, {建立( “FreestyleTest1”)} ) 然而,在这种情况下,输出的样子: 平行{ 附表工作FreestyleTest1 安排工作FreestyleTest1 构建FreestyleTest1#29开始 构建FreestyleTest1#29开始 FreestyleTest1#29完成 FreestyleTest1#29完成 } 作业只运行一次。如果我要将其中一项工作改为另一项工作,那么它们都会并行运行。 – Ash 2015-02-24 23:22:18
@垃圾,有趣。在构建流程0.16的Jenkins 1.580.2中,我可以使用不同参数计划4次相同的子作业,并且子作业同时运行4次。 – 2015-02-25 00:08:33
谢谢你的例子和细节。我发现如果我为子作业提供不同的参数/值,那么实际上会执行多个子作业。它可能是一个插件错误。但是,工作仍不能平行进行。防爆输出:平行{ 安排工作FreestyleTest1 安排工作FreestyleTest1 构建FreestyleTest1#36开始 FreestyleTest1#36完成 建立FreestyleTest1#37开始 FreestyleTest1#37完成 } .....詹金斯状态板上显示,37正在等待在36节结束时,即使节点有2个以上的执行器空闲。 – Ash 2015-02-25 00:58:56