Jenkins Workflow Parallel Step和Jenkins配置

时间:2015-10-22 07:18:39

标签: jenkins jenkins-pipeline

我目前正在研究如何在Jenkins Workflow脚本中最好地使用并行步骤,并且只是想澄清我对其工作原理的理解。

parallel(firstTask: {
    node {
       // Do some stuff
    }
}, secondTask: {
    node {
        // Do some other stuff
    }
})

在这种情况下会是每个任务,因为它包含在一个节点中每个都使用一个执行器?如果我没有节点块,那么任务仍会同时运行吗?

大概最有效的解决方案是在一个单独的奴隶上运行每个节点吗?

我目前正在使用带有两个执行器的单个主盒的设置(虽然因为它是一个四核机器,我想我可以增加它)而我只是想判断最好的利用方式平行的步骤,或者确实在这个设置中是否值得担心。

2 个答案:

答案 0 :(得分:4)

  

如果我没有节点块,那么任务仍会同时运行吗?

是的,这个:

parallel(firstTask: {
   // Do some stuff
}, secondTask: {
   // Do some other stuff
})

将运行非顺序。

例如使用 Build Flow 插件:

   build("job 1")

   parallel
   (
      {build("job 2")}
      {build("job 3")}
   )

   build("job 4")

如果您有2个执行程序,则可以并行运行2个作业。 如果要并行运行更多作业,则需要增加执行程序编号(通过节点配置)。 对于少数工作,这可能会有用,但您可以快速引入一堆链式工作定义。

这就是为什么你还可以查看 Multijob 插件。

它允许定义“阶段”。阶段按顺序执行。 但是每个“阶段”可以并行执行许多工作。 这允许以下工作流程:“处理阶段1的并行作业(直到全部完成),然后进入阶段2”。

  

大概最有效的解决方案是在一个单独的奴隶上运行每个节点吗?

这不容易回答。这取决于项目。

当开发人员希望快速获得构建工件时,通常会使用面向性能的Jenkins设置。

我会尝试使用一个框并引入下一个slave,当达到定义的最大工作负载时,目标是减少总构建时间。换句话说:您可以关注CPU利用率并测量/比较构建时间,同时尝试不同的Jenkins设置,可能是A / B测试。

答案 1 :(得分:0)

试试这个, link

您还可以使用传递参数来运行并行作业。

示例:

   parallel
   (
    {build("job 1", param1:"value1",param2:"value2")}
    {build("job 2",param1:"value1")}
   )