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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:12:59