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

如何在Jenkins中根据构建触发原因设置对应环境变量的取值

你可以直接在声明式Pipeline的environment块中通过三目表达式匹配构建触发原因的取值完成env1的动态赋值,无需额外编写复杂逻辑,修改后的参考代码如下:

pipeline {
    agent any
    environment {
        // 直接获取首个构建触发原因的描述,也可根据实际需求匹配cause的className字段
        BUILD_CAUSE = currentBuild.getBuildCauses()[0].shortDescription
        // 匹配触发原因动态赋值env1
        env1 = "${BUILD_CAUSE == 'Gerritcause' ? 'true' : 'false'}"
        // 如果需要严格限定仅Gerrit/定时触发两种场景,排除其他触发原因的情况可按以下写法自定义默认值
        // env1 = "${BUILD_CAUSE == 'Gerritcause' ? 'true' : (BUILD_CAUSE == 'Timetriggercause' ? 'false' : '你的默认值')}"
        env2 = "true"
    }

    stage('use the env'){
        steps{
            node('master') {
                // 可先执行echo打印调试,确认取值符合预期
                echo "构建触发原因:${BUILD_CAUSE},env1取值:${env1}"
                build.useenv("$env1","$env2")
            }
        }
    }
}

注意事项

  • 如果你不确定实际触发原因的字符串取值,可先打印currentBuild.getBuildCauses()的完整返回结果,根据实际返回的shortDescription或className调整匹配规则即可
  • 若存在多触发原因的场景,可调整为遍历currentBuild.getBuildCauses()数组,判断数组内是否包含对应类型的触发原因再赋值
  • 如果你使用的是脚本式Pipeline,可直接在script代码块中通过env.env1 = 取值的方式完成动态赋值,判断逻辑和上述一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:54:02