Case
我有一个詹金斯奴隶女巫在移动设备(android,ios)上运行葫芦测试。为了区分测试在哪些机器(iOS 的 mac 或 Android 的 Linux)上运行,我还使用Throttle 并发构建插件。通过这种方式,我可以区分设备所连接的 Android 或 Mac Jenkins 从设备。
我使用映射表和自己编写的 bash 脚本按名称调用设备并在此特定从设备上执行测试。映射表将名称映射到设备 ID(或 iOS 的 IP)。
架构如下:
[Master]--(Slave-iOS)---------iPhone6
| |--------------iPhone5
|
|--------(Slave-Android)-----HTCOne
|--------------Nexus
|--------------G4
要将设备移交给 bash 脚本,我使用Jenkins 矩阵项目插件,这让我可以创建设备和测试用例列表,例如:
HTCOne Nexus G4
Run x x x
Delete x x x
CreateUser x x x
遗憾的是这个列表只能顺序执行。现在我还想在多个设备上并行构建测试,反之亦然。
Question
我搜索一个处理设备分配的 Jenkins 插件。如果一个触发器需要特定设备,则应等到该设备可访问并且可以执行测试。该插件应与 Jenkins 中的 shell 执行集成。
如果它可以与 Matrix Project 插件结合使用,那将是一个很大的优势!
到目前为止我所调查的内容:
- 排除插件,
- Throttle Concurrent Builds Plugin,[用于指定slave]
- 锁和闩锁插件,
对于到目前为止列出的所有设备,我不知道如何将它们链接到矩阵配置并动态获取设备。我也不知道
如何将锁定的资源信息获取到我的脚本中。
- 端口分配器插件,未经测试,但似乎有同样的问题
- 外部资源调度程序似乎只分配一种资源,如果它是矩阵配置,则找不到任何资源。
我发现的相关问题有帮助但没有解决问题:
- 如何防止某些 Jenkins 作业同时运行? https://stackoverflow.com/questions/6276272/how-to-prevent-certain-jenkins-jobs-from-running-simultaneously
- Jenkins:对作业进行分组并限制该组的构建处理器 https://stackoverflow.com/questions/12834677/jenkins-group-jobs-and-limit-build-processors-for-this-group
- Jenkins不允许同一作业在同一节点上同时运行? https://stackoverflow.com/questions/11158382/jenkins-to-not-allow-the-same-job-to-run-concurrently-on-the-same-node
- 如何确保 Hudson 中同时只运行某一类别的作业? https://stackoverflow.com/questions/516883/how-do-i-ensure-that-only-one-of-a-certain-category-of-job-runs-at-once-in-hudson
- 从另一个作业中禁用 Jenkins 作业 https://stackoverflow.com/questions/8661349/disable-jenkins-job-from-another-job
If Throttle 并发构建插件 https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin不能按您的要求工作多配置项目, try
排除插件 https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin具有动态资源名称,例如:SEMAPHORE_MATRIX_${NODE_NAME}
然后添加构建步骤“关键块开始”(以及可选的“关键块结束”步骤),该步骤将保持此构建块执行,直到 SEMAPHORE_MATRIX_${NODE_NAME} 未在任何其他作业(包括当前 Matrix 子作业)上使用。
(...仅当 SEMAPHORE_MATRIX_${NODE_NAME} 可用时才运行构建步骤...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)