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

如何基于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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:25:19