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

如何通过Pipeline代码禁用Jenkins任务的“丢弃旧构建”功能?

完善Jenkins Pipeline禁用“丢弃旧构建”的实现逻辑

你的原型思路没问题,但it.discardOldBuilds(disabled)是伪代码,Jenkins Job对象的“丢弃旧构建”功能实际由LogRotator(日志轮转器)实例控制——启用该选项时Job会关联一个LogRotator对象,禁用则需要将其置为null并保存配置。以下是完善后的可运行代码:

import hudson.model.*

// 遍历Jenkins中所有任务
Hudson.instance.getAllItems(Job.class).each { job ->
    // 筛选名称包含指定标识的任务(可根据需求修改匹配规则)
    if (job.fullName.contains("someJobName")) {
        // 禁用"丢弃旧构建":移除日志轮转器配置
        job.setLogRotator(null)
        // 保存任务配置变更
        job.save()
        // 打印操作日志便于验证
        println "已禁用任务 [${job.fullName}] 的'丢弃旧构建'选项"
    }
}

关键说明

  • 核心逻辑:Jenkins的“丢弃旧构建”本质是通过LogRotator定义保留规则,将其设为null等同于在UI中取消勾选该选项
  • 权限要求:执行此脚本需要Jenkins的脚本控制台权限,若在Pipeline中运行,需确保Pipeline拥有修改Job配置的权限(通常需要管理员或对应文件夹的编辑权限)
  • 适配范围:代码兼容所有继承Job类的任务类型(包括自由风格任务、Pipeline任务等)
  • 过滤规则:可根据实际需求修改contains("someJobName"),比如改为job.name == "精确任务名"或结合文件夹路径判断(如job.fullName.startsWith("FolderName/"))
  • 验证建议:执行前先在测试环境验证,避免误修改生产任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:42:34