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}
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.
(... build steps run when semaphore_matrix_${node_name} available ...)
Comments
Post a Comment