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

求助: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:10:22