如何在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
相关产品推荐
相关产品推荐

