【发布时间】:2016-05-31 13:21:56
【问题描述】:
有谁知道将单个 Jenkins 作业拆分为多个部分并同时/并行运行它们的方法?
例如,如果我有一个运行测试的作业需要 30 分钟,有没有办法可以将这个作业分成三个 10 分钟的运行,同时运行但在三个不同的实例中运行
提前致谢。
【问题讨论】:
-
将任务拆分为 3 个作业并在 3 个不同的实例上运行它们?
标签: testing jenkins automation
有谁知道将单个 Jenkins 作业拆分为多个部分并同时/并行运行它们的方法?
例如,如果我有一个运行测试的作业需要 30 分钟,有没有办法可以将这个作业分成三个 10 分钟的运行,同时运行但在三个不同的实例中运行
提前致谢。
【问题讨论】:
标签: testing jenkins automation
创造新的工作,称之为 f.e. 测试。您应该根据根作业的类型来选择作业类型。
如果你有 Maven Job 类型,你可以在 build -> advanced 下设置工作区目录。 Freestyle Job 类型在 project -> advanced 下直接有此选项。
为所有作业设置相同的工作目录。根作业将编译,所有其他作业使用相同的工作目录来使用编译后的输出。
对于测试作业,将测试执行添加为构建步骤,并在此处区分应该执行的测试。
编辑您的根作业并在那里删除长时间运行的测试的执行。你现在可以打电话给那里的三个工作。但是你需要Parameterized Trigger Plugin。
这种方式的缺点是,您需要足够多的 jenkins 执行器来处理所有测试作业。
【讨论】:
如果您使用的是 Jenkins 1.x,我建议您尝试使用 multijob 插件 - 我已成功使用它将单个作业拆分为父作业和多个子作业:
https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin
如果您使用的是 Jenkins 2.x,请尝试管道功能 :) 它使运行并行任务变得非常容易:
https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md#creating-multiple-threads
如果您愿意,我相信您也可以通过插件在 Jenkins 1.x 中使用管道。不过,我还没有研究过。
【讨论】: