gpt4 book ai didi

jenkins - 如何添加从 jenkins 管道中的某个阶段开始的能力?

转载 作者:行者123 更新时间:2023-12-04 14:02:26 25 4
gpt4 key购买 nike

在下面的示例中,我希望能够从参数中选择在任何阶段启 Action 业。 'when' 条件确实有帮助,但我不知道如何让它从 stage2 开始,然后完成它之后的所有阶段。目前如下所示,它只会执行为 START_AT 参数选择的阶段并跳过所有其他阶段。

pipeline {
agent any
parameters {
choice(name: 'START_FROM', choices: ['stage1', 'stage2', 'stage3'], description: 'Choose which step to start the job on.')
}
stages {
stage('stage1') {
when {
expression { params.START_FROM == 'stage1' }
}
steps {
echo "stage1 executing"
}
}

stage('stage2') {
when {
expression { params.START_FROM == 'stage2' }
}
steps {
echo "stage1 executing"
}
}

stage('stage3') {
when {
expression { params.START_FROM == 'stage3' }
}
steps {
echo "stage1 executing"
}
}
}
}

最佳答案

您可能需要巧妙地处理 when{},这很痛苦。首先有一个“开始哪个阶段”的参数将是指示管道将从哪里开始的第一种方法。对于这个例子,我们称它为 stageStart

然后你可以有另一个标志,指示是否可以“继续”。我们称它为 continueStages

对于您的每个阶段,在您的 when{} 中,您可以像这样格式化它:

when {expression {return "${stageStart}" == "stage2" || "${continueStages}" == "true"}}

那么这里的逻辑就是将 continueStage 设置为 false。当您进入一个阶段时,将该变量设置为 true。除非 stageStart 与阶段名称匹配,否则不会进入第一阶段。然后将进入之后的每个阶段。它看起来像这样:

continueStages = "false"
pipeline {
agent any
parameters {
choice(name: 'START_FROM', choices: ['stage1', 'stage2', 'stage3'], description: 'Choose which step to start the job on.')
}
stages {
stage('stage1') {
when {
expression { return {"${stageStart}" == "stage1"} }
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}

stage('stage2') {
when {
expression { return {"${stageStart}" == "stage2" || "${continueStages}" == "true"}}
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}

stage('stage3') {
when {
expression { return {"${stageStart}" == "stage3" || "${continueStages}" == "true"} }
}
steps {
continueStages = "true"
echo "stage1 executing"
}
}
}


}

附录,我想将其设置为您可以在构建时在 Jenkins 中设置的参数。如果您以不同的方式实现它,这个逻辑仍然有效,您只需更改语法(比如不要使用 return{})

关于jenkins - 如何添加从 jenkins 管道中的某个阶段开始的能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69573646/

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