Мы пытаемся написать декларативный сценарий сборки Jenkinsfile для параллельного выполнения нескольких этапов на каждом из нескольких этапов, однако мы должны предотвратить одновременное выполнение нескольких сборок, поскольку они зависят от одного и того же ресурса.Поэтому мы попытались использовать Lock , чтобы заблокировать все этапы, так что сборка может завершиться полностью, прежде чем другая попытается использовать те же ресурсы.
Однако мы нашличто этапы блокировки требуют вложенности этапов в родительском и что параллельные этапы могут быть включены только в этап верхнего уровня : WorkflowScript: 24: Parallel stages or branches can only be included in a top-level stage
По сути, мы пытаемся сделать следующее:
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('parent') {
options {
lock('resource')
}
stages {
stage('build') {
steps {
parallel(
'app1': { build("app1") },
'app2': { build("app2") },
)
}
}
stage('deploy') {
steps {
parallel(
'app1': { deploy("app1") },
'app2': { deploy("app2") },
)
}
}
}
}
}
}
Существуют ли обходные пути для достижения такого поведения?