You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中API1等Boolean参数为false时跳过stage配置报错咨询

Jenkins Pipeline 配置错误修复方案

报错根因

你收到的 Not a valid stage section definition 报错是因为 声明式 Jenkins Pipeline 的 stage 块顶层不允许直接编写原生 Groovy 的 if 语句,所有阶段执行条件必须统一在 when 指令中定义,stage 块的顶层只能包含 agent、when、steps、post 等固定声明式指令。

修复方案

你需要把三个 API 参数的判断逻辑合并到现有 when 指令中,调整后的 stage 结构完全符合声明式语法规范。
你的需求是当 API1、API2、API3 全为 false 时跳过当前 stage,对应判断逻辑为只要任意一个 API 参数为 true 就执行阶段,和原有环境判断组合即可,修正后的完整代码如下:

// 参数定义部分无需调整
booleanParam(
    name: 'API1',
    defaultValue: false,
)
booleanParam(
    name: 'API2',
    defaultValue: false,
)
booleanParam(
    name: 'API3',
    defaultValue: false,
)
choice(
    name: 'Env',
    choices: [ 'uat', 'test']
)
}

stage ('docker build') {
    agent { xxxx }
    when {
        allOf {
            // 原有环境校验逻辑
            expression { params.Env == 'uat' || params.Env == 'test' }
            // 新增API参数校验:任意API为true则执行,全为false则跳过
            expression { params.API1 || params.API2 || params.API3 }
        }
    }
    steps {
        unstash 'xxxx'
        script {
            // 你的业务执行脚本
        }
    }
}

补充说明

  • 如果你的实际需求是只要任意一个API参数为false就跳过阶段,将第二个 expression 逻辑修改为 expression { params.API1 && params.API2 && params.API3 } 即可。
  • when 指令的 allOf 关键字代表所有子条件同时满足时才执行阶段,和你原来的预期逻辑一致。

内容的提问来源于stack exchange,提问作者wlg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 17:24:07