Jenkins管道和大量并行步骤
我已经搜索了整个互联网两周了,在freenode IRC和Jenkins用户群邮件列表中询问,但没有得到答案,所以我在这里,你是我最后的希望(没有压力) 我有一个Jenkins脚本管道,它生成数百个并行分支,这些分支必须同时在数百个从属节点上运行。目前看来Jenkins BlueOcean的用户界面不适合这样做。我们到达了一个点,所有的步骤都无法显示 我需要提供一些背景资料,让您了解我们的需求:我们公司有一个庞大的项目,有数千个Behat/Selenium,如果按顺序进行,现在需要30多小时才能运行。前几次我们实现了一个基本的解决方案,我们使用一个队列系统(RabbitMq)来存储所有测试和运行测试的使用者,方法是从Jenkins下载源代码并将工件上传回Jenkins,但这并不像Jenkins本机从机那样可伸缩,而且维护性不够(例如,我们不能从实时输出日志和使用统计数据中获益) 我知道这里有一个公开的问题描述了这个问题:但是,基本上,我需要一个下周的解决方案(我们的开发团队已经等待这个新管道很长时间了) 我们的管道目前看起来是这样的:Jenkins管道和大量并行步骤,jenkins,jenkins-pipeline,jenkins-blueocean,Jenkins,Jenkins Pipeline,Jenkins Blueocean,我已经搜索了整个互联网两周了,在freenode IRC和Jenkins用户群邮件列表中询问,但没有得到答案,所以我在这里,你是我最后的希望(没有压力) 我有一个Jenkins脚本管道,它生成数百个并行分支,这些分支必须同时在数百个从属节点上运行。目前看来Jenkins BlueOcean的用户界面不适合这样做。我们到达了一个点,所有的步骤都无法显示 我需要提供一些背景资料,让您了解我们的需求:我们公司有一个庞大的项目,有数千个Behat/Selenium,如果按顺序进行,现在需要30多小时才能
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文件的完整版本:(它可能看起来很复杂,但基本上,真正的问题是“功能测试”阶段)
我的问题是:
如果您真的想继续这样做,但又不想让UI变得如此怪异,那么您可以停止将每个测试定义为一个阶段。当一个测试失败时,不太清楚什么失败了,但UI应该会更快乐。“相反,我会将每个并行映射项视为一个工作项,并将您的测试放入队列/堆栈/数据结构中。”你能说得更具体一点吗?我已经这么做了,但我真的希望开发团队能够改变他们的管道,就像他们对Jenkins文件的其余部分所做的那样。正如Spencer Malone所建议的那样,我们保留了我们的队列系统以实现这种并行性。我们对构建做了一点修改,因此更易于扩展(通过删除主机和使用者之间的每一个多对一关系,这样就不会产生瓶颈).您是否尝试过原始管道,其中有数百个分支具有新的Jenkins版本?似乎相关的错误已修复:嘿,Bash,不,我没有,但您是对的,它现在肯定已修复。我们将保留队列系统,因为我们依赖于自动缩放,这在本机Jenkins从属节点上无法很好地工作,但很高兴知道这现在是可能的。