Jenkins技术咨询:禁用未使用构建模块及删除已禁用模块问题
如何在Jenkins 2.107.2中禁用并删除未使用/已禁用模块
针对你在Jenkins 2.107.2版本遇到的禁用未使用模块、删除已禁用模块的问题,我来给你一步步梳理可行的方案——毕竟这个版本确实没有那个一键删除的选项,得用替代方法:
一、禁用未使用的模块
根据你的项目类型(自由风格/Maven多模块),操作步骤略有不同,但核心逻辑一致:
- 打开目标项目的配置页面(点击项目名称 → 左侧菜单栏的「配置」)
- 找到模块相关的配置区域:
- 如果是Maven多模块项目,在「构建」部分找到Maven模块列表
- 如果是自由风格项目,在「模块」或「MultiJob阶段」区域找到对应条目
- 对每个你想禁用的模块,勾选条目旁的**「禁用」复选框**(通常在模块名称右侧)
- 滚动到页面底部,点击「保存」,这些模块就不会再参与后续构建了
二、删除已禁用的模块
因为你的版本没有「Delete All Disabled Modules」选项,这里提供两种方法:
方法1:手动删除(适合模块数量少的情况)
- 同样进入项目配置页面,找到模块列表
- 逐个定位已禁用的模块,点击条目右侧的删除按钮(通常是垃圾桶图标或「删除」链接)
- 全部删除完成后,点击页面底部的「保存」即可
方法2:脚本批量删除(适合模块数量多的场景)
如果手动删太麻烦,可以用Jenkins脚本控制台批量处理,步骤如下:
- 进入Jenkins的脚本控制台(主页 → 管理Jenkins → 脚本控制台)
- 复制并运行以下Groovy脚本,记得把
YOUR_PROJECT_NAME替换成你的项目全名:
def project = Jenkins.instance.getItemByFullName("YOUR_PROJECT_NAME") if (project instanceof hudson.maven.MavenModuleSet) { // 处理Maven多模块项目 def modulesToRemove = project.getModules().findAll { !it.isEnabled() } modulesToRemove.each { module -> println "Removing disabled module: ${module.getName()}" project.getModules().remove(module) } project.save() println "Successfully removed ${modulesToRemove.size()} disabled modules." } else if (project instanceof hudson.model.FreeStyleProject) { // 处理自由风格MultiJob项目的模块 def builders = project.getBuildersList() builders.each { builder -> if (builder instanceof org.jenkinsci.plugins.multijob.MultiJobBuilder) { def phases = builder.getPhaseJobs() def phasesToRemove = phases.findAll { !it.isEnabled() } phasesToRemove.each { phase -> println "Removing disabled phase/module: ${phase.getJobName()}" phases.remove(phase) } builder.setPhaseJobs(phases) } } project.save() println "Checked and removed disabled modules for free-style multi-job project." } else { println "Unsupported project type. Please check your project configuration." }
- 运行后,控制台会输出删除的模块信息,返回项目配置页面确认即可
注意事项
- 操作前建议先备份Jenkins配置(管理Jenkins → 备份配置),避免误操作导致配置丢失
- 脚本控制台需要Jenkins管理员权限才能访问
- 如果是Pipeline项目,未使用的模块通常定义在Jenkinsfile中,直接修改Jenkinsfile去掉对应模块即可
内容的提问来源于stack exchange,提问作者guru
相关产品推荐
相关产品推荐

