脚本化管道语法中并行的顺序阶段
Sequential stages inside parallel in Scripted Pipeline syntax
在我的 Jenkinsfile 中,我并行执行了 2 个阶段,其中一个阶段将由几个其他顺序阶段组成。当我 运行 脚本并检查 BlueOcean 中的管道时,该阶段序列表示为一个节点。
(简化)脚本如下:
node {
stage('Stage 1') {...}
stage('Stage 2') {...}
stage('Stages 3 & 4 in parallel') {
parallel(
'Stage 3': {
stage('Stage 3') {...}
},
'Stage 4': {
stage('Stage 4a') {...}
stage('Stage 4b') {...}
}
)
}
}
所以在 BlueOcean 中,此脚本会为第 4 阶段生成一个节点,而我希望看到两个节点,因为它由两个连续的阶段组成。
我也遇到过与脚本化管道相同的问题。如果你对声明式管道没问题,你可以使用这个:
pipeline {
agent any
stages {
stage('Stage 1') { steps {pwd()}}
stage('Stage 2') { steps {pwd()}}
stage('Stages 3 & 4 in parallel') {
parallel {
stage('Stage 3') { steps {pwd()}}
stage('Stage 4') {
stages {
stage('Stage 4a') { steps {pwd()}}
stage('Stage 4b') { steps {pwd()}}
}
}
}
}
}
}
使用最新版本的 jenkins 2.235.3 和最新的插件,现在可以在脚本管道中运行。
pipeline scripted image
node ('fetch') {
stage('Stage 1') { sh(script:"echo Stage1",label: "sh echo stage 1")}
stage('Stage 2') { sh(script:"echo Stage2",label: "sh echo stage 2")}
stage('Stages 3 & 4 in parallel') {
parallel(
'Stage 3': {
stage('Stage 3') {sh(script:"echo Stage3",label: "sh echo stage 3")}
},
'Stage 4': {
stage('Stage 4a') {sh(script:"echo Stage4a",label: "sh echo stage 4a")}
stage('Stage 4b') {sh(script:"echo Stage4b",label: "sh echo stage 4b")}
}
)
}
}
在我的 Jenkinsfile 中,我并行执行了 2 个阶段,其中一个阶段将由几个其他顺序阶段组成。当我 运行 脚本并检查 BlueOcean 中的管道时,该阶段序列表示为一个节点。
(简化)脚本如下:
node {
stage('Stage 1') {...}
stage('Stage 2') {...}
stage('Stages 3 & 4 in parallel') {
parallel(
'Stage 3': {
stage('Stage 3') {...}
},
'Stage 4': {
stage('Stage 4a') {...}
stage('Stage 4b') {...}
}
)
}
}
所以在 BlueOcean 中,此脚本会为第 4 阶段生成一个节点,而我希望看到两个节点,因为它由两个连续的阶段组成。
我也遇到过与脚本化管道相同的问题。如果你对声明式管道没问题,你可以使用这个:
pipeline {
agent any
stages {
stage('Stage 1') { steps {pwd()}}
stage('Stage 2') { steps {pwd()}}
stage('Stages 3 & 4 in parallel') {
parallel {
stage('Stage 3') { steps {pwd()}}
stage('Stage 4') {
stages {
stage('Stage 4a') { steps {pwd()}}
stage('Stage 4b') { steps {pwd()}}
}
}
}
}
}
}
使用最新版本的 jenkins 2.235.3 和最新的插件,现在可以在脚本管道中运行。
pipeline scripted image
node ('fetch') {
stage('Stage 1') { sh(script:"echo Stage1",label: "sh echo stage 1")}
stage('Stage 2') { sh(script:"echo Stage2",label: "sh echo stage 2")}
stage('Stages 3 & 4 in parallel') {
parallel(
'Stage 3': {
stage('Stage 3') {sh(script:"echo Stage3",label: "sh echo stage 3")}
},
'Stage 4': {
stage('Stage 4a') {sh(script:"echo Stage4a",label: "sh echo stage 4a")}
stage('Stage 4b') {sh(script:"echo Stage4b",label: "sh echo stage 4b")}
}
)
}
}