Lockable Resources Plugin 可以解决你的问题。
链接:https://wiki.jenkins-ci.org/display/JENKINS/Lockable+Resources+Plugin
描述:This plugin allows to define lockable resources (such as printers, phones, computers, etc.) that can be used by builds. If a build requires an resource which is already locked, it will wait for the resource to be free. One can define a lock-priority globally and on a per-job basis.
对于你机子上的 4 台 android 设备,可以手动把它们配置在 Lockable Resources 里。比如以设备序列号做为名字,Label 设定为你的资源池的名字 (比如 Nexus)。如果你想自动的把连接的设备配置进来,可以创建一个上游 job,根据 adb devices -l 的设备列表,更新 Jenkins 配置文件 org.jenkins.plugins.lockableresources.LockableResourcesManager.xml.
<org.jenkins.plugins.lockableresources.LockableResource>
<name>Serial Number 1</name>
<description>Functional Testing</description>
<labels>Google Nexus</labels>
</org.jenkins.plugins.lockableresources.LockableResource>
你提到的关键字有 不在本地跑 diff 自动触发。既然需要在远程执行,你肯定是要 commit 的对吧,总不能生成 patch 然后应用到远程服务器上触发测试。我们解决这类场景是:
git commit/review 后, Jenkins job 按照 Gerrit event 触发执行,获取本次的代码变更。下游 job 可以执行测试集通知测试结果。
建议你先查看 Build Console Output 的错误信息,才好分析解决。需要重点排查的配置是: