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
相关产品推荐
相关产品推荐

