如何通过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
相关产品推荐
相关产品推荐

