Scripted Pipeline 中如何正确设置并行构建的 stage 名称?
我在 Jenkins 的 Scripted Pipeline 里用 parallel 做并行任务,但每个分支的 stage 名字都显示成 “Branch A”、”Branch B” 这种默认名,想自定义成更有意义的名字,比如 “Build Frontend” 和 “Run Tests”,但改了之后 pipeline 就报错说 stage 名称无效,是不是写法有问题?
我试过这样写:
parallel(
"Build Frontend": {
stage("Build Frontend") {
sh 'npm run build'
}
},
"Run Tests": {
stage("Run Tests") {
sh 'npm test'
}
}
)
首先,在 parallel 块中,key 就是你要显示的 stage 名称,而 value 是一个闭包(closure),这个闭包里面就直接放你要执行的任务逻辑,不需要再用 stage 块去包裹。这里需要注意,stage 块在 scripted pipeline 里和 declarative pipeline 里的用法是有区别的,不能直接套用。
正确的写法应该是这样:
原理其实很简单,parallel 方法会根据你传入的 map 来创建并行的分支,map 的 key 就是这个分支的名字,value 是要执行的逻辑。这样做不仅能让你的 pipeline 结构更清晰,而且在 Jenkins 界面上也能看到更有意义的阶段名称。
再来个实际例子看看:
我之前也在这里栽过跟头,以为 stage 是必需的,结果发现根本不需要在 parallel 里再套一层。希望这些能帮你解决问题。如果还有问题的话,随时问吧。
pre class="pure-highlightjs line-numbers">
parallel("Build Frontend": {
sh 'npm run build'
},
"Run Tests": {
sh 'npm test'
}
)