rod*_*dee 5 jenkins jenkins-pipeline jenkins-declarative-pipeline
我有如下声明式管道,它并行运行 2* 和 3* 阶段,粘贴下面的蓝海图。
pipeline {
agent { label 'my_node' }
options {
timestamps()
parallelsAlwaysFailFast()
}
stages {
stage('1') {
steps {
script {
step([$class: 'WsCleanup'])
}
}
}
stage('2') {
parallel {
stage("2.1") {
steps {
script {
sh 'echo hi 2.1'
}
}
}
stage("2p") {
steps {
script {
sh 'echo hi 2p'
}
}
}
}
}
stage('3') {
parallel {
stage('3.1') {
steps {
script {
sh """
echo hi 3.1
"""
}
}
}
stage('3.2') {
steps {
script {
sh """
echo "hi 3.2"
"""
}
}
}
}
}
stage('4') {
steps {
script {
sh "echo end"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我希望与 2* 和 3* 并行运行 2p,如下所示,有办法吗?

我尝试在并行下使用并行,以并行方式启动2p到2和3,并嵌套并行以运行3.1。和下面的 3.2,但声明性管道不允许嵌套并行。
仅通过语法无法做到这一点Declarative。Scripted但是您可以通过和语法的组合来实现这一点Declarative。需要注意的一件事是,据我所知,目前还没有对嵌套并行阶段的可视化支持。这里有一个针对此的功能请求。
以下是一个示例管道,您可以将其用作您的用例的参考。
pipeline {
agent any
options {
timestamps()
parallelsAlwaysFailFast()
}
stages {
stage('1') {
steps {
script {
step([$class: 'WsCleanup'])
}
}
}
stage('2 AND 3') {
steps {
script {
parallel getWrappedStages()
}
}
}
stage('4') {
steps {
script {
sh "echo end"
}
}
}
}
}
def getWrappedStages() {
stages = [:]
stages["Step2.1"] = { stage('2.1') {
sh """
echo hi 2.1
"""
}
parallel parallel3xstages()
}
stages["Step2.p"] = { stage('2.p') {
sh """
echo hi 2.p
"""
}
}
return stages
}
def parallel3xstages() {
stages = [:]
stages["Step3.1"] = { stage('3.1') {
sh """
echo hi 3.1
"""
}
}
stages["Step3.2"] = { stage('3.2') {
sh """
echo hi 3.2
"""
}
}
return stages
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4392 次 |
| 最近记录: |