gpt4 book ai didi

Jenkins Pipeline阶段跳过基于管道中定义的groovy变量

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

我正在尝试跳过基于 groovy 变量的阶段,并且该变量值将在另一个阶段计算。

在下面的示例中,基于环境变量 VALIDATION_REQUIRED 有条件地跳过 Validate 阶段,我将在构建/触发作业时传递该环境变量。 --- 这按预期工作。

尽管 isValidationSuccess 变量设置为 false,但 Build 阶段始终运行。我尝试更改 when 条件表达式,例如 { return "${isValidationSuccess}"== true ; }{ return "${isValidationSuccess}"== 'true' ; } 但没有任何效果。打印变量时它显示为“false”

def isValidationSuccess = true 
pipeline {
agent any
stages(checkout) {
// GIT checkout here
}
stage("Validate") {
when {
environment name: 'VALIDATION_REQUIRED', value: 'true'
}
steps {
if(some_condition){
isValidationSuccess = false;
}
}
}
stage("Build") {
when {
expression { return "${isValidationSuccess}"; }
}
steps {
sh "echo isValidationSuccess:${isValidationSuccess}"
}
}
}
  1. when 条件将在哪个阶段进行评估。
  2. 是否可以使用when跳过基于变量的阶段?
  3. 基于一些答案,我可以考虑添加条件 block ,如下所示,但是 when 选项看起来很干净。此外,当跳过特定阶段时,阶段 View 会很好地显示。
script {
if(isValidationSuccess){
// Do the build
}else {
try {
currentBuild.result = 'ABORTED'
} catch(Exception err) {
currentBuild.result = 'FAILURE'
}
error('Build not happened')
}
}

引用文献: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/

最佳答案

stage("Build") {
when {
expression { isValidationSuccess == true }
}
steps {
// do stuff
}
}

when 验证 bool 值,因此应评估为 true 或 false。

Source

关于Jenkins Pipeline阶段跳过基于管道中定义的groovy变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602609/

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