如何基于Choice参数实现Jenkins流水线阶段的条件执行?
解决Jenkins流水线条件执行问题
你的语法错误出在错误使用${}包裹条件表达式,且声明式流水线中需用when指令实现阶段条件执行,而非直接写if语句。以下是修正后的完整脚本,可实现你需要的逻辑:
pipeline { parameters { choice choices: ['ME', 'FC', 'ME_and_FC'], description: 'Pick Something', name: 'Build_type' } agent { node{ label 'Slave_APP_Train_32' customWorkspace 'App_WS' } } stages { // FC阶段:仅当选择FC或ME_and_FC时执行 stage('FC - Stage 1') { when { expression { params.Build_type in ['FC', 'ME_and_FC'] } } steps { echo "D6-EPS EXECUTED" } } stage('FC - Stage 2') { when { expression { params.Build_type in ['FC', 'ME_and_FC'] } } steps { echo "D6-EPS EXECUTED" } } stage('FC - Stage 3') { when { expression { params.Build_type in ['FC', 'ME_and_FC'] } } steps { echo "D6-EPS EXECUTED" } } // 并行ME阶段:仅当选择ME或ME_and_FC时执行 stage('ME Parallel Stages'){ when { expression { params.Build_type in ['ME', 'ME_and_FC'] } } parallel { stage('ME - D6 SRA Group') { stages { stage('D6 SRA') { steps { echo "D6-EPS EXECUTED" } } } } stage('ME - D6 EPS Group') { stages { stage('D6 EPS') { steps { echo "D6-EPS EXECUTED" } } } } stage('ME - C3 EPS Group') { stages { stage('C3 EPS') { steps { echo "D6-EPS EXECUTED" } } } } } } } }
关键修改说明:
- 修正条件语法:用
when { expression { ... } }替代错误的if写法,表达式直接用Groovy语法,无需${}包裹。 - 简化条件判断:用
params.Build_type in ['X', 'Y']替代逻辑或运算符,代码更简洁易读。 - 重命名重复阶段:将原重复的
FC和ME阶段改名,避免Jenkins执行时产生混淆(虽允许重名,但可读性差,不推荐)。 - 批量控制阶段:给每个FC子阶段单独加
when,确保所有FC阶段按参数条件执行;给并行ME的父阶段加when,控制整个并行块的执行。
逻辑验证:
- 选择
FC:仅执行所有FC阶段,ME并行块跳过 - 选择
ME:仅执行ME并行块内的所有子阶段,FC阶段跳过 - 选择
ME_and_FC:FC阶段和ME并行块全部执行
内容的提问来源于stack exchange,提问作者Nikil
相关产品推荐
相关产品推荐

