问题描述:
你这种属于指定 job 之间不允许并行,目前 jenkins 好像没见到有类似这样的功能可供配置。
可以考虑下面几个方向:
1、状态合并。三个 job 合一,用参数区分。这样借助 Job 本身的不允许并行构建可以做到。缺点是相关的定时任务什么的也都被合并了,会增加维护成本。
2、状态共享。建立一个临时文件,用于记录这个手机上是否已经有别的 job 在用(比如 job 开始跑时创建这个文件,跑完后删掉这个文件)。每次 job 运行时先查这个文件内容,如果有,那 job 就直接结束不跑或者轮询等待直到可以跑。基本上云真机平台共享设备资源也是类似这样的做法,只是为了避免意外退出设备持续被占用,一般会额外加个使用时必须保活 + 没有保活则超时自动释放的机制。
3、执行器限制。三个 job 的执行器都分配到一个最多只能同时跑一个任务的执行器上,这样执行器自动会保障 3 个 job 同一时间只有一个在跑,剩余的排队。缺点是为了这个需求额外弄一个执行器,有点不值当。
问题来源: 当我们执行 UI 自动化测试时可能会涉及到,一台手机跑多个用例的过程亦或者多个 APP 的过程测试,但是一台手机只允许一个模块或者一个 APP 的自动化测试,因此 JOB 之间存在着手机资源的争抢问题,为了防止两个模块被同时进行(因为可能不是自己操作,自己操作会主动去看下,但是不清楚的业务测试同学我们需要帮他们去规避这个问题)
安装 Lockable Resources 插件,插件的主要功能
安装完毕后进行重启 Jenkins
根据自己需要给资源起个 Name 和标签即可,应用并保存
当 UI_Auto_Search 执行时,BBJ_Auto_Search 被放在构建队列中,此时资源不足,需要等待构建,我们也可以主动去释放资源,释放完,可以正常构建。
你这种属于指定 job 之间不允许并行,目前 jenkins 好像没见到有类似这样的功能可供配置。
可以考虑下面几个方向:
1、状态合并。三个 job 合一,用参数区分。这样借助 Job 本身的不允许并行构建可以做到。缺点是相关的定时任务什么的也都被合并了,会增加维护成本。
2、状态共享。建立一个临时文件,用于记录这个手机上是否已经有别的 job 在用(比如 job 开始跑时创建这个文件,跑完后删掉这个文件)。每次 job 运行时先查这个文件内容,如果有,那 job 就直接结束不跑或者轮询等待直到可以跑。基本上云真机平台共享设备资源也是类似这样的做法,只是为了避免意外退出设备持续被占用,一般会额外加个使用时必须保活 + 没有保活则超时自动释放的机制。
3、执行器限制。三个 job 的执行器都分配到一个最多只能同时跑一个任务的执行器上,这样执行器自动会保障 3 个 job 同一时间只有一个在跑,剩余的排队。缺点是为了这个需求额外弄一个执行器,有点不值当。
可以利用构建触发器把三个 Job 串行起来,A 跑完后跑 B,B 跑完后跑 C,控制 A 的触发即可控制 B、C 的触发。
这个配置可行吗?
在 job 里面配置的时候串起来依赖。或者分 slave 执行
问题来源: 当我们执行 UI 自动化测试时可能会涉及到,一台手机跑多个用例的过程亦或者多个 APP 的过程测试,但是一台手机只允许一个模块或者一个 APP 的自动化测试,因此 JOB 之间存在着手机资源的争抢问题,为了防止两个模块被同时进行(因为可能不是自己操作,自己操作会主动去看下,但是不清楚的业务测试同学我们需要帮他们去规避这个问题)
安装 Lockable Resources 插件,插件的主要功能
安装完毕后进行重启 Jenkins
根据自己需要给资源起个 Name 和标签即可,应用并保存
当 UI_Auto_Search 执行时,BBJ_Auto_Search 被放在构建队列中,此时资源不足,需要等待构建,我们也可以主动去释放资源,释放完,可以正常构建。