Jenkins Pipeline是否有展示Rebuilder重建信息的环境变量?
关于Jenkins Rebuilder插件1.31版本的Pipeline重建识别方案
嘿,刚好我对这个插件的使用有过相关经验,给你分享下可行的解决办法:
Rebuilder插件本身并没有直接提供currentBuild.rebuild这类简洁的属性,但它会给重建的构建添加一个专属的构建触发原因(Build Cause),我们可以通过这个来判断是否是重建任务,以及获取原构建的编号。
具体实现思路
当任务由Rebuilder触发重建时,构建的buildCauses列表中会包含一个hudson.plugins.rebuild.RebuildCause类型的对象,里面就存储了原构建的信息。你可以在Pipeline脚本里通过遍历这个列表来提取相关数据。
Pipeline脚本示例
// 初始化变量 def isRebuild = false def originalBuildNum = null // 遍历所有构建触发原因 currentBuild.buildCauses.each { cause -> // 匹配Rebuilder插件的专属触发原因 if (cause.class.name == 'hudson.plugins.rebuild.RebuildCause') { isRebuild = true // 获取原构建的编号 originalBuildNum = cause.originalBuild?.number } } // 根据结果输出信息或执行对应逻辑 if (isRebuild) { echo "✅ 这是由Rebuilder触发的重建任务,原构建编号:#${originalBuildNum}" } else { echo "🔄 这是一次全新的构建任务" }
补充说明
- 你在控制台看到的
Rebuilds build #12这条日志,正是Rebuilder插件通过这个RebuildCause对象生成的,所以这个判断逻辑和Jenkins识别重建任务的逻辑是完全一致的。 - 如果你想通过环境变量快速判断,也可以尝试检查
env.BUILD_CAUSE变量——当是重建任务时,这个变量的值会包含RebuildCause的相关标识,但相比遍历buildCauses,这种方式的可靠性稍弱(比如多原因触发时可能会有干扰),所以更推荐上面的buildCauses遍历方案。
内容的提问来源于stack exchange,提问作者Cloud
相关产品推荐
相关产品推荐

