В настоящее время я хочу иметь решение, позволяющее мне обрабатывать большую часть задачи.
Допустим, у меня есть файл с 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, который является четко определенным пределом параллельных шагов.
Есть идеи?