我有几个(几百个)文件要运行测试(每个测试需要几分钟)。
顺序运行是不可接受的,也不是全部。所以我正在寻找像生产者 - 消费者这样的东西。
我尝试了以下方式管道作业和并行命令:
android:isolatedProcess="true"
问题:
所有任务同时启动(OOM和所有乐趣)
答案 0 :(得分:0)
与Jenkins并行步骤没有相同的内省,但由于它似乎不支持固定池,您可以使用xargs
来实现相同的结果:
def files = findFiles glob: 'test_files/*'
def branches = [:]
// there's probably a more efficient way to generate the list of commands
files.each{
sh "echo './test ${it}' >> tests.txt"
}
sh 'cat tests.txt | xargs -L 1 -I {} -P 2 bash -c "{}"'
-P
参数是指定应始终运行的固定数量的2(或N)个进程的参数。其他工具如GNU Parallel提供了更多关于应该使用多少进程的调优。
您还可以尝试使用Lockable Resources plugin中的lock
步骤,node
步骤定位固定数量的执行者。然而,这对我来说似乎太过分了,除非你的单项测试已经花了几十秒。