gpt4 book ai didi

jenkins - Jenkins中并行管道中的顺序阶段

转载 作者:行者123 更新时间:2023-12-03 16:55:47 25 4
gpt4 key购买 nike

我在 Jenkins (Jenkins)中有一个动态脚本管道,该管 Prop 有许多并行阶段,但是在每个阶段中,都有多个串行步骤。我已经花了几天时间试图使它起作用:无论我如何尝试,所有串行子级都被合并到一个级中!
这是我现在所拥有的:

node () {
stage("Parallel Demo") {
// Canonical example to run steps in parallel

// The map we'll store the steps in
def stepsToRun = [:]

for (int i = 1; i < 5; i++) {
stepsToRun["Step${i}"] = { node {
echo "start"
sleep 1
echo "done"
}}
}
// Actually run the steps in parallel
// parallel takes a map as an argument
parallel stepsToRun
}
}

它让我得到了这个美丽的并行管道:

enter image description here

但是,在我添加一个串行阶段的那一刻,又名:
node () {
stage("Parallel Demo") {
// Run steps in parallel

// The map we'll store the steps in
def stepsToRun = [:]

for (int i = 1; i < 5; i++) {
stepsToRun["Step${i}"] = { node {
stage("1") {
echo "start 1"
sleep 1
echo "done 1"
}
stage("2") {
echo "start 2"
sleep 1
echo "done 2"
}
}}
}
// Actually run the steps in parallel
// parallel takes a map as an argument
parallel stepsToRun
}
}

我得到了这个丑陋的东西,看起来完全一样:

enter image description here

为了增加进攻性,我看到了执行的子步骤。如何使子步骤显示为阶段?

另外,如果有一种方法可以使声明式管 Prop 有动态阶段(顺序和并行),那么我全力以赴。我找到了 you can do static sequential stages,但是几乎不知道如何使其动态化而又无需返回脚本化管道。

最佳答案

这是您可以做自己想做的事情的方法

def stepsToRun = [:]

pipeline {
agent none

stages {
stage ("Prepare Stages"){
steps {
script {
for (int i = 1; i < 5; i++) {
stepsToRun["Step${i}"] = prepareStage("Step${i}")
}
parallel stepsToRun
}
}
}
}
}

def prepareStage(def name) {
return {
stage (name) {
stage("1") {
echo "start 1"
sleep 1
echo "done 1"
}
stage("2") {
echo "start 2"
sleep 1
echo "done 2"
}
}
}
}

enter image description here

关于jenkins - Jenkins中并行管道中的顺序阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com