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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:52:47