Jenkins多配置项目处理并发设备使用情况

时间:2015-06-29 16:27:59

标签: testing mobile jenkins calabash

案例

我有一个Jenkins奴隶女巫在移动设备上运行的葫芦测试(android,ios)。要分别在哪些机器(适用于iOS的Android或适用于Android的Linux)上运行测试,我还使用 Throttle Concurrent Builds Plug-in 。通过这种方式,我将设备连接到的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

遗憾的是,此列表只能按顺序执行。现在我也希望在多个设备上并行构建测试,反之亦然。

问题

  

我搜索一个处理设备分配的Jenkins插件。如果一个触发器需要特定设备,它应该等到可以访问该设备并且可以执行测试。该插件应该与Jenkins中的shell执行集成。

如果它可以与Matrix Project插件结合使用,那将是一大优势!

到目前为止我所看到的:

  • 排除-插件,
  • Throttle Concurrent Builds Plug-in,[用于指定slave]
  • 锁定和锁存插件, 对于目前为止列出的所有内容,我不知道如何将它们链接到矩阵配置并动态获取设备。我也不知道 如何将锁定的资源信息存入我的脚本。
  • Port Allocator插件,未经测试但似乎有同样的问题
  • 外部资源调度程序,似乎只分配一个资源,如果它是矩阵配置,则找不到任何内容。

我找到的相关问题,虽然有所帮助但没有解决问题:

1 个答案:

答案 0 :(得分:4)

如果Throttle Concurrent Builds Plugin多配置项目中无法正常工作,请尝试 Exclusion Plugin具有动态资源名称,例如: SEMAPHORE_MATRIX _ $ {NODE_NAME}

enter image description here

然后添加构建步骤“关键块启动”(以及可选的“关键块结束”步骤),这将保持此构建块执行,直到SEMAPHORE_MATRIX _ $ {NODE_NAME}未在任何其他作业上使用,包括当前矩阵儿童工作。

enter image description here

(...仅当SEMAPHORE_MATRIX _ $ {NODE_NAME}可用时才构建要运行的步骤...)