我正在使用 Jenkins 进行构建,并且我编写了一些测试脚本,我需要在构建编译后运行这些脚本。我想节省一些时间,所以我必须并行运行测试脚本。我怎样才能做到这一点?
编辑:好的,我知道我需要为每个测试一个单独的作业(对于 4 个测试,我需要 4 个作业,对吗?)所以,我做到了,并通过父作业我运行了这个作业。(使用“构建其他项目”插件)。但我没有设法汇总结果(使用汇总的下游测试结果)。父作业在下游作业完成之前退出。我该怎么办?
谢谢。
我正在使用 Jenkins 进行构建,并且我编写了一些测试脚本,我需要在构建编译后运行这些脚本。我想节省一些时间,所以我必须并行运行测试脚本。我怎样才能做到这一点?
编辑:好的,我知道我需要为每个测试一个单独的作业(对于 4 个测试,我需要 4 个作业,对吗?)所以,我做到了,并通过父作业我运行了这个作业。(使用“构建其他项目”插件)。但我没有设法汇总结果(使用汇总的下游测试结果)。父作业在下游作业完成之前退出。我该怎么办?
谢谢。
您可以使用多作业插件。这将允许您并行运行多个作业,并且父作业将等待子作业完成。父作业状态可以由子作业状态确定。
Jenkins 并不允许你并行运行。但是,您可以将构建拆分为不同的作业来实现此目的。它看起来像这样。
这是一个很大的笨拙。更好的选择是在运行测试的脚本中并行化,即运行单个脚本,然后并行运行测试。如果这是不可能的,你将不得不分成不同的工作。
实际上你可以,但你需要一些编码。就我而言,我在 jenkins 上有并行测试执行。
1)创建一个带有参数的小作业,应该用一个小套件进行测试运行
2)编辑此作业以在从属列表上运行(您有适当的环境)
3)编辑此构建以允许并发构建
现在是困难的部分。
4)创建一个小型 java 程序,用于计算要运行的每个作业的参数列表。
5)遍历列表并在新线程上启动新的 Jenkins 作业。
在运行之间放置一个Thread.sleep(5000)
以避免通信错误
6)加入线程
在每项工作结束时,我将结果发送到共享位置,以便在所有测试结束时执行一些报告。
要使用参数启动 jenkins 作业,请使用CLI
我打算使我的代码尽可能通用,并在其他人需要时发布。
你看过 Jenkins JOIN 插件吗?我没有使用它,但我相信这是你想要完成的。
- 迈克
您可以将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") }
)