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

Jenkins如何在when块中实现or条件控制Stage执行?

问题分析与解决方法

你当前的表达式逻辑存在错误,导致Stage始终会执行。拆解来看:
当params.PROJECT_TAG为project1时,params.PROJECT_TAG != 'project2'的结果为true;当参数为project2时,params.PROJECT_TAG != 'project1'的结果为true;如果是其他值,两个条件都成立。不管参数是什么,||连接的表达式结果永远是true,所以Stage一直会执行。

要实现「当参数为project1或project2时不执行该Stage」,等价于「仅当参数既不是project1也不是project2时才执行Stage」,正确的写法有两种:

方法一:用逻辑与(&&)连接条件

stages {
  stage('Cloudformation Init') {
    when {
      expression { params.PROJECT_TAG != 'project1' && params.PROJECT_TAG != 'project2' }
    }
    // 你的Stage执行步骤
  }
}

方法二:用in操作符取反(可读性更强)

stages {
  stage('Cloudformation Init') {
    when {
      expression { !(params.PROJECT_TAG in ['project1', 'project2']) }
    }
    // 你的Stage执行步骤
  }
}

这两种写法都能达成需求:只要PROJECT_TAG是project1或project2,该Stage就会被跳过;其他参数值时才会执行Stage。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:15:48