testing - Jenkins multiconfiguration project handle concurrent device usage -


case

i have jenkins slave witch run's calabash tests on mobile devices (android, ios). separate on machines (the mac ios or linux android) tests run, use throttle concurrent builds plug-in. way separate between android or mac jenkins slaves devices hooked to.

i use mapping table , self written bash script call device name , execute test on specific slave. mapping table map's name device id (or ip ios).

the architecture follows:

[master]--(slave-ios)---------iphone6  |             |--------------iphone5  |              |--------(slave-android)-----htcone                |--------------nexus                |--------------g4 

to hand on device bash script use jenkins matrix project plugin, lets me create list of devices , test cases like:

          htcone nexus g4 run         x     x     x delete      x     x     x createuser  x     x     x 

sadly list can executed sequentially. want build tests on multiple devices in parallel , cross vice versa.

question

i search jenkins plugin handles devices allocation. if 1 trigger needs specific device should wait until 1 accessible , test can executed. plugin should integrate shell execution in jenkins.

a big plus be, if can combined matrix project plugin!

what looked far:

  • exclusion-plugin,
  • throttle concurrent builds plug-in, [used specifiy slave]
  • locks , latches plugin, listed ones far, don't know how link them matrix configuration , device dynamically. don't know how locked resource information script.
  • port allocator plugin, not tested seems have same problem
  • external resource dispatcher, seem allocate 1 resource , not finding if matrix configuration.

related questions found, helped didn't solved problem:

if throttle concurrent builds plugin doesn't work required in multi-configuration project, try exclusion plugin dynamic resource name, like: semaphore_matrix_${node_name}

enter image description here

then add build step "critical block start" (and optional "critical block end" step), hold build block execution until semaphore_matrix_${node_name} not in use on other job, including current matrix child jobs.

enter image description here

(... build steps run when semaphore_matrix_${node_name} available ...)


Comments

Popular posts from this blog

android - Gradle sync Error:Configuration with name 'default' not found -

java - Andrioid studio start fail: Fatal error initializing 'null' -

html - jQuery UI Sortable - Remove placeholder after item is dropped -