Jenkins:并行化测试执行

Jenkins:并行化测试执行,jenkins,continuous-integration,jenkins-plugins,Jenkins,Continuous Integration,Jenkins Plugins,我开始在我的项目中使用Jenkins,我正在尝试将我的测试套件(Rspec测试用例)并行化,这些测试套件是用Jenkins中的4个文件编写的 spec/features/ |-- test1.rb |-- test2.rb |-- test3.rb |-- test4.rb 我们可以使用下面的命令运行所有测试用例,它将按顺序运行用test1.rb..test4.rb编写的所有测试,大约需要1小时 script spec/features/ 如果您想从每个测试文件执行测试用例,我们可以像 sc

我开始在我的项目中使用Jenkins,我正在尝试将我的测试套件(Rspec测试用例)并行化,这些测试套件是用Jenkins中的4个文件编写的

spec/features/
|-- test1.rb
|-- test2.rb
|-- test3.rb
|-- test4.rb
我们可以使用下面的命令运行所有测试用例,它将按顺序运行用test1.rb..test4.rb编写的所有测试,大约需要1小时

script spec/features/
如果您想从每个测试文件执行测试用例,我们可以像

script spec/features/test1.rb
现在我想将这些测试用例并行化,这样可以将运行时间从1小时减少到15分钟,所有这些测试用例都可以在一台机器上并行运行

我在詹金斯遵循以下方法

spec/features/
|-- test1.rb
|-- test2.rb
|-- test3.rb
|-- test4.rb
1) 设置新作业“主测试作业”

(二)

添加触发器--->

添加触发器--->

添加触发器--->

(三)

当我启动“Main_Test_job”时,它将在同一台机器上自动启动4个子_Test_job,这将使我的总运行时间减少到15分钟

  • 但在这种情况下,“主测试作业”无法监视4的状态 child_test_作业,它总是在启动4后立即成功
    童工

  • “阻止,直到触发的项目完成其构建”此选项 监视子作业,但如果我们为所有子作业选择此选项, 它们是按顺序而不是并行运行的

我不能使用join插件,因为我没有运行不同的作业,而是多次触发同一个作业

我的想法:

  • 每个test.rb都有单独的作业,并使用join触发器进行监视 所有作业的状态

  • 有一些shell脚本作为“Main_Test_job”的构建后任务 它将聚合/监视每个作业的状态/结果

  • 我认为这在许多组织中都是常见的情况,Jenkins必须有一种简单的方法来实现这一点。
    请让我知道你的方法/想法。可能我遗漏了一些东西。

    如果您的作业可以在同一台机器上并行运行,那么多作业插件可能会引起您的兴趣。它并行启动作业,但等待所有作业完成。

    您也可以使用


    您可以使用此插件运行任何类型的作业。

    谢谢NotAgain..,这符合我的要求。我应该对所有可用的插件进行更多的研究,但它们有很多:)
    Selected "Trigger/Call builds on other projects"
    projects to build " Child_test_job"
    Build on same node
    Predefined Parameters TEST_UNIT=test2.rb
    Block until the triggered projects finish their builds ( Not selected this)
    
    Selected "Trigger/Call builds on other projects"
    projects to build " Child_test_job"
    Build on same node
    Predefined Parameters TEST_UNIT=test3.rb
    Block until the triggered projects finish their builds ( Not selected this)
    
    Selected "Trigger/Call builds on other projects"
    projects to build " Child_test_job"
    Build on same node
    Predefined Parameters TEST_UNIT=test4.rb
    Block until the triggered projects finish their builds ( Not selected this)
    
       Created job "Child_test_job" as which was included in main_test_job like below
       Select Build step "Execute Shell" with below command
       script spec/$TEST_UNIT