2013-10-07 76 views
0

我使用Jenkins作为构建版本,并且编写了一些测试脚本,需要在构建编译之后运行。 我想节省一些时间,所以我必须并行运行测试脚本。我怎样才能做到这一点?在Jenkins中运行并行作业

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

谢谢。

回答

0

詹金斯并不真的让你平行运行。然而,你可以将你的构建分成不同的工作来实现这一点。它看起来像这样。

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

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

+0

谢谢,但我还是有一点问题,当构建成功,只有测试失败,詹金斯标志着整个建设成为“不稳定”。如果我将它分解为两个作业,构建作业将会成功,只有运行测试的作业将会变得不稳定。这对我来说是个问题。 和我有很多测试,我是否需要为每一个创建一个单独的作业? – user1836185

+0

你需要单独的工作。关于另一个问题,你可以运行一项工作,收集所有的结果,并在一切完成后给出正确的结果。 –

+0

但比第一份工作还是会成功的吧?我不确定我是否理解上一份工作的目的.. – user1836185

0

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

迈克 -

+0

正如我上面写的,我需要在Jenkins中同时运行一些测试。我可以在同一个项目中使用詹金斯的“后期制作动作”一个接一个地执行它们(不是并行的)。但我需要平行运行它们。我不想在我的perl脚本中做这件事,我需要詹金斯去做。现在更清楚了吗?谢谢:) – user1836185

+0

编辑我的答案,希望能回答你的问题。 – mikew

+0

加入的问题是我需要创建一个加入作业。我需要的主要工作将等待测试结果,所以它可以发送只有一个邮件与构建兰特的测试结果.. – user1836185

0

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

1)与应该做一个测试运行的小套房

2)编辑这份工作的奴隶名单上运行(如果您有适当的参数创建一个小的工作环境)

3)编辑此版本允许并发建立

现在最困难的部分。

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

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

将运行间有Thread.sleep(5000)为了避免通信错误

6)加入螺纹

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

对于开始参数的詹金斯工作中使用CLI

我打算让我的代码尽可能通用和发布它,如果任何人都需要它。