与詹金斯并行运行

时间:2016-05-19 08:08:18

标签: jenkins jenkins-pipeline

我有几个(几百个)文件要运行测试(每个测试需要几分钟)。

顺序运行是不可接受的,也不是全部。所以我正在寻找像生产者 - 消费者这样的东西。

我尝试了以下方式管道作业和并行命令:

 android:isolatedProcess="true"

问题:

所有任务同时启动(OOM和所有乐趣)

1 个答案:

答案 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步骤定位固定数量的执行者。然而,这对我来说似乎太过分了,除非你的单项测试已经花了几十秒。