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

求助:Groovy脚本无法获取Jenkins文件夹内的任务实例

解决Jenkins文件夹内任务实例的获取问题

老兄,我之前也踩过这个坑!原来的Hudson.instance.getJob("$job_name")只能直接抓取根目录下的任务,一旦任务挪到文件夹里,这个方法就不认带层级的路径了,难怪你加了文件夹名也没用。给你两个靠谱的解决办法:

方法一:直接用完整路径获取(最省心)

Jenkins提供了getItemByFullName()方法,专门用来识别带层级结构的任务名称,不管是单层还是多层嵌套文件夹都能用。代码改成这样就行:

// 拼接完整的任务路径,格式是「文件夹名/任务名」,多层嵌套就是「文件夹1/文件夹2/任务名」
def fullJobPath = "你的文件夹名称/${job_name}"
// 推荐用Jenkins.instance代替Hudson.instance,更适配新版Jenkins
def job = Jenkins.instance.getItemByFullName(fullJobPath)
println("Job: $job")

方法二:先拿文件夹实例再取任务(更灵活)

如果你需要对文件夹做额外操作,或者想确认目标文件夹存在,可以先获取文件夹对象,再从中提取任务:

def folder = Jenkins.instance.getItem("你的文件夹名称")
// 先判断拿到的是不是有效的Folder实例(避免拿错成普通任务)
if (folder instanceof com.cloudbees.hudson.plugins.folder.Folder) {
    def job = folder.getItem(job_name)
    println("Job: $job")
} else {
    println("指定的不是有效的Jenkins文件夹!")
}

额外提醒

  • 确保你的Jenkins脚本有足够权限,要是碰到权限报错,得去「Manage Jenkins」→「In-process Script Approval」里允许相关方法的调用。
  • 新版Jenkins里Hudson.instance其实是Jenkins.instance的别名,建议统一用Jenkins.instance,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:43:59