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

如何批量为Jenkins非声明式任务配置Discard Build策略?

批量配置Jenkins任务构建丢弃策略及全局配置疑问

一、批量启用Discard Build策略的脚本方案

你之前尝试的脚本仅用于删除指定范围的历史构建,并非配置自动构建丢弃策略,所以无法实现需求。针对Jenkins 2.332.2版本,推荐使用Jenkins内置的**脚本控制台(Script Console)**执行Groovy脚本批量配置,比Bash脚本更直接可靠:

批量配置脚本(Groovy)

// 配置参数:最大保留构建数
def maxBuildsToKeep = 6
// 是否仅处理非Declarative Pipeline任务(根据需求设置)
def filterNonPipelineJobs = true

// 遍历所有Jenkins任务
Jenkins.instance.getAllItems(AbstractProject.class).each { job ->
    // 过滤非Pipeline任务(如果开启过滤)
    if (filterNonPipelineJobs && job instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {
        return // 跳过Pipeline任务
    }

    // 构建丢弃策略配置
    def discardOldBuilds = new hudson.tasks.LogRotator(
        maxBuildsToKeep, // 最大保留构建数
        -1,              // 最大保留天数(-1表示不限制)
        -1,              // 最大保留日志天数(-1表示不限制)
        -1               // 最大保留日志个数(-1表示不限制)
    )

    // 应用策略
    job.setLogRotator(discardOldBuilds)
    job.save()
    println "已为任务 [${job.fullName}] 配置构建丢弃策略:保留最多 ${maxBuildsToKeep} 个构建"
}

使用说明

  1. 进入Jenkins后台 → Manage Jenkins → Script Console
  2. 将上述脚本粘贴到输入框,按需修改maxBuildsToKeep和filterNonPipelineJobs参数
  3. 点击Run执行,执行后会输出每个已配置的任务名称

如果坚持要用Bash脚本,可通过jenkins-cli工具调用脚本控制台,示例Bash命令:

# 前提是已配置jenkins-cli并完成认证
java -jar jenkins-cli.jar -s http://your-jenkins-url/ groovy = << EOF
# 粘贴上述Groovy脚本内容
EOF

二、全局构建丢弃器的生效逻辑

在「Manage Jenkins - Configuration - Global Build Discarders」中启用的全局策略,并非对所有任务强制生效,具体规则如下:

  • 若任务未单独配置构建丢弃策略,会自动继承全局配置
  • 若任务已单独配置过构建丢弃策略,全局配置会被任务自身的配置覆盖

如果你的100个任务之前都没有配置过丢弃策略,启用全局配置后会自动生效;但如果部分任务已有自定义策略,全局配置不会覆盖它们。若要确保所有目标任务统一使用「保留6个构建」的策略,建议使用上述批量脚本直接配置任务自身的策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:32:50