Jenkins管道和大量并行步骤

Jenkins管道和大量并行步骤,jenkins,jenkins-pipeline,jenkins-blueocean,Jenkins,Jenkins Pipeline,Jenkins Blueocean,我已经搜索了整个互联网两周了,在freenode IRC和Jenkins用户群邮件列表中询问,但没有得到答案,所以我在这里,你是我最后的希望(没有压力) 我有一个Jenkins脚本管道,它生成数百个并行分支,这些分支必须同时在数百个从属节点上运行。目前看来Jenkins BlueOcean的用户界面不适合这样做。我们到达了一个点,所有的步骤都无法显示 我需要提供一些背景资料,让您了解我们的需求:我们公司有一个庞大的项目,有数千个Behat/Selenium,如果按顺序进行,现在需要30多小时才能

我已经搜索了整个互联网两周了,在freenode IRC和Jenkins用户群邮件列表中询问,但没有得到答案,所以我在这里,你是我最后的希望(没有压力)

我有一个Jenkins脚本管道,它生成数百个并行分支,这些分支必须同时在数百个从属节点上运行。目前看来Jenkins BlueOcean的用户界面不适合这样做。我们到达了一个点,所有的步骤都无法显示

我需要提供一些背景资料,让您了解我们的需求:我们公司有一个庞大的项目,有数千个Behat/Selenium,如果按顺序进行,现在需要30多小时才能运行。前几次我们实现了一个基本的解决方案,我们使用一个队列系统(RabbitMq)来存储所有测试和运行测试的使用者,方法是从Jenkins下载源代码并将工件上传回Jenkins,但这并不像Jenkins本机从机那样可伸缩,而且维护性不够(例如,我们不能从实时输出日志和使用统计数据中获益)

我知道这里有一个公开的问题描述了这个问题:但是,基本上,我需要一个下周的解决方案(我们的开发团队已经等待这个新管道很长时间了)

我们的管道目前看起来是这样的:

Build --- Unit Tests --- Integration Tests --- Functional Tests ---
                |                |                    |
              tool A            suite A        matrix-A-A-batch 0
              tool B            suite B        matrix-A-A-batch 1
              tool C                           matrix-A-A-batch 2
                                               matrix-A-A-batch 3
                                                     ....
                                              "Unable to display more"
您可以在这里找到我们的Jenkins文件的完整版本:(它可能看起来很复杂,但基本上,真正的问题是“功能测试”阶段)

我的问题是:

  • 我使用并行是好方法吗
  • 这只是Jenkins/BlueOcean的问题,我应该为我链接的问题做出贡献吗?(如果是,怎么做?我根本不是Java开发人员)
  • 我应该尝试使用多作业和并行作业而不是步骤吗
  • 除了parallel,还有其他工具可以使用吗?(某种叉子或其他什么)
  • 非常感谢您的帮助。我喜欢Jenkins通过管道和BlueOcean UI所做的一切,我真的很想让它在我们的团队中发挥作用


  • 这可能是一种执行并行任务的糟糕方法。我会将每个并行映射条目视为一个工作线程,并将您的测试放入队列/堆栈/数据结构中。每个工作线程都可以根据需要弹出队列,这样您就不会坐在那里等待一百万个任务排队。您必须更加小心地进行日志记录,以便目前很明显哪个测试失败了,但这不应该太难
  • 这可能不是一件容易修复的事情,因为它和其他任何东西一样都是一个UI设计问题。我建议你试试看!谁知道呢,也许有一个解决方案会适合你
  • 可能不会。在我看来,这会让事情变得更糟
  • 并行是您的分叉选择

  • 如果您真的想继续这样做,但又不想让UI变得如此怪异,那么您可以停止将每个测试定义为一个阶段。当一个测试失败时,不太清楚什么失败了,但UI应该会更快乐。

    “相反,我会将每个并行映射项视为一个工作项,并将您的测试放入队列/堆栈/数据结构中。”你能说得更具体一点吗?我已经这么做了,但我真的希望开发团队能够改变他们的管道,就像他们对Jenkins文件的其余部分所做的那样。正如Spencer Malone所建议的那样,我们保留了我们的队列系统以实现这种并行性。我们对构建做了一点修改,因此更易于扩展(通过删除主机和使用者之间的每一个多对一关系,这样就不会产生瓶颈).您是否尝试过原始管道,其中有数百个分支具有新的Jenkins版本?似乎相关的错误已修复:嘿,Bash,不,我没有,但您是对的,它现在肯定已修复。我们将保留队列系统,因为我们依赖于自动缩放,这在本机Jenkins从属节点上无法很好地工作,但很高兴知道这现在是可能的。