Jenkins多分支流水线作业分类统计与筛选脚本求助
Groovy脚本实现多分支流水线作业统计与筛选
核心脚本实现
// 初始化统计变量 def activeMultibranchCount = 0 def disabledMultibranchCount = 0 def activeBranchJobsCount = 0 def disabledBranchJobsCount = 0 // 存储排除禁用多分支及其分支的作业列表 def validJobs = [] // 获取所有多分支流水线 Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject).each { multibranch -> def multibranchFullName = multibranch.getFullName() // 统计多分支流水线本身的状态 if (multibranch.isDisabled()) { disabledMultibranchCount++ println "禁用的多分支流水线: ${multibranchFullName}" } else { activeMultibranchCount++ println "活跃的多分支流水线: ${multibranchFullName}" // 活跃的多分支流水线加入有效作业列表 validJobs.add(multibranchFullName) // 遍历其下的分支作业 multibranch.getItems().each { branchJob -> def branchFullName = branchJob.getFullName() if (branchJob.isDisabled()) { disabledBranchJobsCount++ println " 禁用的分支作业: ${branchFullName}" } else { activeBranchJobsCount++ println " 活跃的分支作业: ${branchFullName}" // 活跃的分支作业加入有效列表 validJobs.add(branchFullName) } } } } // 输出统计结果 println "\n=== 统计结果 ===" println "活跃的多分支流水线数量: ${activeMultibranchCount}" println "禁用的多分支流水线数量: ${disabledMultibranchCount}" println "活跃的分支作业数量: ${activeBranchJobsCount}" println "禁用的分支作业数量: ${disabledBranchJobsCount}" // 输出排除禁用多分支及其分支的作业列表 println "\n=== 有效作业列表 (排除禁用多分支及其分支) ===" validJobs.each { job -> println job }
脚本说明
- 多分支流水线状态判断:直接通过
multibranch.isDisabled()判断多分支流水线本身的禁用状态,修正了之前混淆WorkflowJob与WorkflowMultiBranchProject类型的问题。 - 分支作业遍历:通过
multibranch.getItems()获取多分支流水线下属的所有分支作业(均为WorkflowJob类型),逐个判断分支的活跃/禁用状态。 - 统计逻辑:分别对多分支流水线本身、分支作业的活跃/禁用数量独立计数,清晰区分两类统计维度。
- 有效作业筛选:仅将活跃的多分支流水线及其活跃分支作业加入
validJobs列表,自动排除禁用的多分支流水线及其所有分支。
注意事项
- 执行脚本需确保拥有Jenkins的Job读取权限,避免权限不足导致的API调用失败。
- 若Jenkins版本存在差异,部分API可能需微调(例如部分旧版本可用
getAllJobs()替代getItems())。
内容的提问来源于stack exchange,提问作者KNCK
相关产品推荐
相关产品推荐

