我已经在整个互联网上搜索了 2 周,在 freenode IRC 和 Jenkins 用户组邮件列表中询问,但没有得到答案,所以我在这里,你是我最后的希望(没有压力)
我有一个 Jenkins 脚本管道,它生成数百个并行分支,这些分支必须在数百个从节点上同时运行。目前看来 Jenkins BlueOcean 用户界面不适合这种情况。我们达到了一个点,所有步骤都无法显示。
我需要提供某种背景来让您了解我们的需求:我们公司有一个庞大的项目,其中包含数千个 Behat/Selenium,如果按顺序完成,现在需要超过 30 小时才能运行。我们前段时间实现了一个基本解决方案,我们使用排队系统(RabbitMq)来存储所有测试和运行测试的消费者,方法是从 Jenkins 下载源代码并将工件上传回 Jenkins,但这不像Jenkins 本地从属,它的可维护性不够(例如,我们无法从实时输出日志和使用统计中受益)。
我知道这里有一个描述问题的未解决问题:https ://issues.jenkins-ci.org/browse/JENKINS-41205但是,基本上,我需要在下周工作的解决方法(我们的开发团队正在等待这个新管道很长一段时间了)。
我们的管道现在看起来像这样:
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"
您可以在此处找到我们的 Jenkinsfile 的完整版本:https ://github.com/willy-ahva/pim-community-dev/blob/086e4ed48ef1a3d880ca16b6f5572f350d26eb03/Jenkinsfile (它可能看起来很复杂,但基本上,真正的问题是“功能测试”阶段)
我的问题是:
- 我使用并行的好方法吗?
- 这只是一个 Jenkins/BlueOcean 问题,我应该为我链接的问题做出贡献吗?(如果是,如何?我根本不是 Java 开发人员)
- 我应该尝试使用 MultiJob 并并行化作业而不是步骤吗?
- 除了并行之外,还有其他工具可以使用吗?(某种叉子或其他什么)?
非常感谢你的帮助。我喜欢 Jenkins 在 Pipeline 和 BlueOcean UI 中的表现,我真的很想让它在我们的团队中发挥作用。