在Jenkins中运行并行作业

时间:2013-10-07 11:27:14

标签: perl testing jenkins jenkins-plugins

我正在使用Jenkins进行构建,并编写了一些测试脚本,我需要在构建编译后运行它们。 我想节省一些时间,所以我必须并行运行测试脚本。我怎么能这样做?

编辑:好的,我知道我知道每次测试都需要一个单独的工作(对于4个测试,我需要4个工作,对吧?) 所以,我这样做,并通过父工作我运行这个工作。 (使用“构建其他项目”插件)。 但我没有设法聚合结果(使用聚合下游测试结果)。父作业在下游作业完成之前退出。 我该怎么办?

感谢。

6 个答案:

答案 0 :(得分:1)

您可以使用多作业插件。这将允许您并行运行多个作业,父作业将等待子作业完成。父作业状态可以由子作业状态确定。

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

答案 1 :(得分:0)

詹金斯并不真的允许你并行运行。但是,您可以将构建拆分为不同的作业来实现此目的。它看起来像这样。

  • 编译源代码的作业。
  • 运行测试的作业由编译完成并开始运行触发。他们将上一个作业的编译结果复制到他们的工作区中。

但这是一个很大的问题。更好的选择是在运行测试的脚本中进行并行化,即运行单个脚本然后并行运行测试。如果这是不可能的,你将不得不分成不同的工作。

答案 2 :(得分:0)

你看过Jenkins JOIN插件吗?我没有使用它,但我相信这是你想要完成的。

- 迈克

答案 3 :(得分:0)

实际上你可以,但你需要一些编码。 就我而言,我在jenkins上执行并行测试。

1)创建一个小作业,其参数可以用小套件进行测试

2)编辑此作业以在从属列表上运行(您拥有适当的环境)

3)编辑此版本以允许并发版本

现在是困难的部分。

4)创建一个小型java程序,用于计算要运行的每个作业的参数列表。

5)通过列表迭代并在新线程上启动新的Jenkins作业。

在运行之间放置Thread.sleep(5000)以避免通信错误

6)加入主题

在每项工作结束时,我会将结果发送到共享位置,以便在所有测试结束时执行一些报告。

要使用参数启动jenkins作业,请使用 CLI

我打算让我的代码尽可能通用,并在其他人需要的时候发布它。

答案 4 :(得分:0)

您可以将https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin与此类代码一起使用

平行(

// job 1, 2 and 3 will be scheduled in parallel.
{ build("job1") },
{ build("job2") },
{ build("job3") }

答案 5 :(得分:0)

您可以使用以下任何一项:

  1. Multijob plugin

  2. Build Flow plugin