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

如何配置Jenkins声明式流水线触发阶段,使其不对标签触发构建?

正确配置示例

直接替换你当前测试阶段的when块即可:

stage('test') {                                                                                   
  when {
    allOf {
      // 显式要求仅非Tag构建时,匹配develop分支
      branch pattern: 'develop', buildingTag: false
      // 安全判断是否为定时触发器触发,无需申请脚本执行权限
      expression { 
        return currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause').size() > 0 
      }
    }
    beforeAgent true
  }                                                                                                       
  steps {
    // 原有测试步骤逻辑
  }
}
原配置失效原因
  1. 声明式流水线的branch条件默认行为是:如果当前为Tag构建,会直接返回true,不受分支匹配规则限制,即便你加了not { buildingTag() },部分旧版本的Pipeline Model插件也会出现判断优先级异常的问题。通过显式给branch参数加上buildingTag: false,可以强制要求仅非Tag构建时才执行分支匹配,Tag构建时直接返回false。
  2. 你之前使用的currentBuild.rawBuild.getCause写法需要额外的脚本安全审批,且获取不到对应触发器时会返回空值,容易触发隐性异常导致判断逻辑失效。使用官方提供的currentBuild.getBuildCauses方法无需权限审批,返回的列表判断逻辑更稳定。
可选调试步骤

如果配置后仍有问题,可以新增临时调试阶段打印相关参数定位问题:

stage('debug') {
  steps {
    echo "是否为Tag构建: ${buildingTag()}"
    echo "当前分支/Tag名: ${env.BRANCH_NAME}"
    echo "构建触发原因列表: ${currentBuild.getBuildCauses()}"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:07