Многопоточная / параллельная пакетная обработка Jenkins - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я хочу иметь решение, позволяющее мне обрабатывать большую часть задачи.

Допустим, у меня есть файл с 5000 строк, и я хочу выполнить шаги "sh" независимо, каждая задачалегкий вес, но может занимать много времени, поэтому их обработка может ждать долго.

Итак, допустим, я бы хотел обработать их как кусочки, скажем, 5.

Я видел это:

Простое параллельное выполнение в Jenkins для массива это близко к тому, что я хочу, но там я не нашел способа разграничить это, и я попытался с процессом 1k просто выполнить эхо и мой Jenkinsначал с этим бороться, чуть не повесился.Попробуйте это и убедитесь:

pipeline {
    agent {
        label "master"
    }

    stages {
        stage("run") {
            steps {
                script {
                    arr = []
                    for(i = 0; i < 1000; i++) arr.add("${i}");

                    def stepsForParallel = [:]
                    arr.each {
                        def stepName = "running ${it}"
                        stepsForParallel[stepName] = { ->           
                            echo "${it}"
                        }
                    }
                    parallel stepsForParallel
                }
            }
        }
    }

}

Я хотел бы получить что-то вроде этого:

pipeline {
    agent {
        label "master"
    }

    stages {
        stage("run") {
            steps {
                script {
                    arr = []
                    for(i = 0; i < 1000; i++) arr.add("${i}");

                    def stepsForParallel = [:]
                    arr.each {
                        def stepName = "running ${it}"
                        stepsForParallel[stepName] = { ->           
                            echo "${it}"
                        }
                    }
                    // Let's say 5 by 5
                    parallel steps: stepsForParallel, size: 5;
                }
            }
        }
    }

}

https://www.cloudbees.com/blog/parallelism-and-distributed-builds-jenkins, который является четко определенным пределом параллельных шагов.

Есть идеи?

...