求助:Jenkins Groovy脚本筛选指定任务类型及统计启用/禁用任务
Jenkins Groovy 脚本解决方案
需求1:统计指定类型任务数量
以下脚本会过滤出WorkflowJob、FreestyleProject、MavenModuleSet(对应Maven构建类型)这三类任务,排除文件夹及其他类型,并统计总数量:
// 定义需要统计的任务类型 def targetTypes = [ WorkflowJob.class, FreestyleProject.class, MavenModuleSet.class ] // 获取所有符合类型的任务 def filteredJobs = Jenkins.instance.getAllItems(Job.class).findAll { job -> targetTypes.contains(job.class) } // 输出统计结果 println "符合要求的任务总数量: ${filteredJobs.size()}" // 可选:输出每个任务的名称和类型 filteredJobs.each { job -> println "${job.name} - ${job.class.simpleName}" }
需求2:获取启用/禁用任务的列表及数量
基于需求1的过滤结果,进一步区分任务的启用状态,输出对应列表和数量:
// 定义需要统计的任务类型 def targetTypes = [ WorkflowJob.class, FreestyleProject.class, MavenModuleSet.class ] // 获取所有符合类型的任务 def filteredJobs = Jenkins.instance.getAllItems(Job.class).findAll { job -> targetTypes.contains(job.class) } // 按启用状态分组 def enabledJobs = filteredJobs.findAll { it.isDisabled() == false } def disabledJobs = filteredJobs.findAll { it.isDisabled() == true } // 输出启用任务信息 println "=== 启用任务列表(共${enabledJobs.size()}个) ===" enabledJobs.each { job -> println "${job.fullName} (${job.class.simpleName})" } // 输出禁用任务信息 println "\n=== 禁用任务列表(共${disabledJobs.size()}个) ===" disabledJobs.each { job -> println "${job.fullName} (${job.class.simpleName})" }
关键说明
getAllItems(Job.class)会递归获取所有层级的任务(包括子文件夹内的),无需额外处理文件夹遍历isDisabled()方法用于判断任务是否被禁用,返回true表示禁用,false表示启用fullName属性会输出任务的完整路径(包含文件夹层级),如果只需要名称可以用name替代
内容的提问来源于stack exchange,提问作者KNCK
相关产品推荐
相关产品推荐

