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

如何在Jenkins中基于构建完成状态清理旧构建记录

Jenkins Declarative Pipeline 按构建状态清理旧构建方案

方案1:保留所有SUCCESS/FAILED构建,仅留存最新1条UNSTABLE构建

直接在你的声明式Pipeline中添加post执行块,调用Jenkins内置API完成过滤清理,无需额外安装插件:

pipeline {
    agent any
    // 你原有任务的配置、stages逻辑写在这里
    triggers {
        pollSCM('H/10 * * * *') // 你原有10分钟轮询的配置保持即可
    }
    post {
        always {
            script {
                import hudson.model.Result
                def unstableBuilds = []
                // 遍历所有历史构建收集UNSTABLE状态的构建
                Jenkins.instance.getItemByFullName(env.JOB_NAME).builds.each { build ->
                    if (build.result == Result.UNSTABLE) {
                        unstableBuilds << build
                    }
                }
                // 仅保留最新的1条UNSTABLE构建,其余全部删除
                if (unstableBuilds.size() > 1) {
                    unstableBuilds.sort { -it.number } // 按构建号倒序排列,最新的排在最前
                    for (int i = 1; i < unstableBuilds.size(); i++) {
                        unstableBuilds[i].delete()
                    }
                }
            }
        }
    }
}

逻辑说明:每次构建完成后都会遍历当前任务的所有历史构建,筛选出状态为UNSTABLE的条目,按构建号倒序后,从第2条旧的UNSTABLE构建开始逐一删除,同时会自动清理对应构建的制品、日志等相关文件。

方案2:直接删除所有UNSTABLE构建

如果不需要保留任何UNSTABLE构建,把上面script块里的逻辑替换为以下内容即可:

script {
    import hudson.model.Result
    Jenkins.instance.getItemByFullName(env.JOB_NAME).builds.each { build ->
        if (build.result == Result.UNSTABLE) {
            build.delete()
        }
    }
}

注意事项

  • 运行前需要确保Jenkins的任务配置中,开启了脚本访问内置API的相关权限,避免执行报错
  • 如果任务历史构建数量特别多,可以在遍历的时候增加判断只处理最近30天的构建,降低性能消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:15:02