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

如何使用Groovy获取Jenkins文件夹下非当前构建的其他任务描述

问题根因

jenkins.model.Jenkins.instance.getItem() 仅支持检索Jenkins根目录下的任务,嵌套在文件夹中的任务无法通过直接传入任务名称获取,所以你会拿到null对象。

解决方案

方法1:通过全路径直接检索(推荐)

调用getItemByFullName接口传入目标任务的完整路径即可,路径使用/分隔层级,不需要带URL中的job/前缀,示例代码如下:

// 替换为你的目标任务全路径,格式为 父文件夹名/子文件夹名/任务名
def targetJobPath = "FOLDERJOBS/JOB_TO_BE_EXTRACTED"
def targetJob = jenkins.model.Jenkins.instance.getItemByFullName(targetJobPath)

// 空值判断避免空指针
if (!targetJob) {
    println "未找到目标任务,请检查路径或运行权限"
    return
}
def lastBuild = targetJob.lastBuild
if (!lastBuild) {
    println "目标任务暂无构建记录"
    return
}

// 若要获取Jenkins原生的构建描述字段,使用以下代码
def sysBuildDesc = lastBuild.description
println "系统构建描述:${sysBuildDesc}"

// 若要获取构建变量中自定义的Description参数,使用以下代码
def customDesc = lastBuild.getBuildVariables().get("Description")
println "自定义Description变量:${customDesc}"

方法2:逐级查找文件夹

如果任务嵌套在多层文件夹中,也可以逐层检索避免路径写错:

// 先获取一级文件夹
def folder = jenkins.model.Jenkins.instance.getItem("FOLDERJOBS")
// 从文件夹中获取目标任务
def targetJob = folder.getItem("JOB_TO_BE_EXTRACTED")
// 后续获取构建信息的逻辑与方法1一致
常见排查点
  • 路径格式错误:全路径不要包含URL中的job/字段,层级之间使用/分隔
  • 权限不足:脚本运行的身份需要有目标任务的读取权限,否则接口也会返回null
  • 脚本未审批:在流水线中运行该代码时,需要先在Jenkins的「脚本审批」页面放行相关API的调用权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:54:02