如何在Jenkins Pipeline中获取其他任务的最新成功构建号?
获取Jenkins Pipeline 2.0中另一个任务的最新成功构建号
嘿,这个需求我之前在项目里也碰到过,Jenkins Pipeline 2.0里有几种靠谱的方式能拿到另一个任务的最新成功构建号,我给你整理一下常用的两种方案:
方案一:直接调用Jenkins核心API(最直接的查询方式)
这种方式不需要额外触发构建,直接查询目标任务的历史成功构建记录,代码示例如下:
// 替换成你的目标任务名称,如果任务在文件夹里,用完整路径比如"FolderName/TargetJob" def targetJobName = "你的目标任务名称" def targetJob = Jenkins.instance.getItemByFullName(targetJobName) def lastSuccessfulBuild = targetJob.getLastSuccessfulBuild() if (lastSuccessfulBuild) { def buildNumber = lastSuccessfulBuild.getNumber() echo "✅ 目标任务【${targetJobName}】的最新成功构建号是:${buildNumber}" } else { echo "⚠️ 目标任务【${targetJobName}】还没有成功的构建记录哦" }
注意事项:
- 权限要求:如果你的Jenkins开启了脚本安全机制,这段代码里的API调用(比如
Jenkins.instance.getItemByFullName()、getLastSuccessfulBuild())需要在「Manage Jenkins > In-process Script Approval」中审批通过才能运行。 - 文件夹任务适配:如果目标任务在Jenkins文件夹内,一定要传入完整的任务路径,比如
"MyProjectFolder/BackendBuildJob",不能只传任务名。
方案二:结合build步骤获取(适合需要触发构建的场景)
如果你刚好需要触发目标任务的构建,同时想拿到它最新的成功构建号,可以用build步骤的返回对象来获取:
def targetJobName = "你的目标任务名称" // 触发目标任务构建,propagate设为false避免当前流水线因目标任务失败而中断 def buildResult = build( job: targetJobName, propagate: false, wait: true // 等待目标任务构建完成 ) // 检查构建是否成功,然后获取构建号 if (buildResult.result == "SUCCESS") { echo "✅ 目标任务【${targetJobName}】的最新成功构建号是:${buildResult.number}" } else { echo "⚠️ 目标任务【${targetJobName}】本次构建未成功,最新成功构建号请参考历史记录" }
适用场景:
这个方案更适合你需要主动触发目标任务构建,并且要基于它的构建结果做后续操作的场景。如果只是单纯查询历史成功构建号,方案一更高效。
内容的提问来源于stack exchange,提问作者王子1986
相关产品推荐
相关产品推荐

