Jenkins 脚本化管道语法中并行内部的顺序阶段
在我的Jenkins文件中,我并行执行两个阶段,其中一个阶段将由其他几个连续阶段组成。当我运行脚本并检查BlueOcean中的管道时,阶段序列表示为一个节点 (简化)脚本如下:Jenkins 脚本化管道语法中并行内部的顺序阶段,jenkins,jenkins-pipeline,jenkins-declarative-pipeline,jenkins-blueocean,Jenkins,Jenkins Pipeline,Jenkins Declarative Pipeline,Jenkins Blueocean,在我的Jenkins文件中,我并行执行两个阶段,其中一个阶段将由其他几个连续阶段组成。当我运行脚本并检查BlueOcean中的管道时,阶段序列表示为一个节点 (简化)脚本如下: node { stage('Stage 1') {...} stage('Stage 2') {...} stage('Stages 3 & 4 in parallel') { parallel( 'Stage 3': {
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和最新插件,现在正在脚本化管道中运行
正如您所注意到的,在蓝海用户界面中,脚本化管道似乎处理得不好。我认为没有理由仍然使用脚本语法,因为如果您需要更自由地编写代码,可以使用声明性语法中的
script
块。谢谢您提供的解决方案。要从脚本式转换为声明式,需要进行一些重构,但看起来确实更好。:)这一个可以工作,但基本上是一个伪装成脚本的声明性管道
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")}
}
)
}
}