1. 概述
Jenkins 拥有一套强大的插件管理系统。虽然我们通常可以通过 Jenkins 的 Web 管理界面来更新插件,但从命令行更新插件可以更好地支持自动化运维,特别是对于有大量 Jenkins 实例的企业级用户。
本教程将介绍如何使用 Jenkins CLI(命令行接口)更新插件。我们会先介绍 Jenkins CLI 的 install-plugin
命令,然后展示如何使用其 groovy
命令执行脚本完成插件更新。
我们使用的 Jenkins 版本为 2.452.3,运行在本地主机 8080 端口上。操作需要 Jenkins 管理员权限。
2. Jenkins CLI 简介
Jenkins 提供了内置的命令行接口(CLI),用于通过脚本或终端与 Jenkins 交互。这对于自动化日常运维任务非常有用。
CLI 的核心是一个名为 jenkins-cli.jar
的 JAR 文件。我们可以在 Jenkins 的“管理 Jenkins > 脚本控制台”页面中下载它。
Jenkins CLI 提供多个命令,例如:
list-plugins
:列出所有已安装的插件install-plugin
:安装或更新插件groovy
:执行 Groovy 脚本
本教程将重点使用 install-plugin
和 groovy
命令进行插件更新。
3. 使用 install-plugin
命令
3.1 获取待更新插件列表
首先,我们使用 list-plugins
列出所有插件,并过滤出需要更新的:
$ java -jar jenkins-cli.jar -s http://localhost:8080 -auth admin:admin_secret_password list-plugins
ant Ant Plugin 497.v94e7d9fffa_b_9 (511.v0a_a_1a_334f41b_)
antisamy-markup-formatter OWASP Markup Formatter Plugin 162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api Apache HttpComponents Client 4.x API Plugin 4.5.14-208.v438351942757
...
输出中括号内的版本号表示有新版本可用。我们可以通过如下命令提取这些插件名称:
$ update_list=$(java -jar jenkins-cli.jar -s http://localhost:8080 -auth admin:admin_secret_password list-plugins | grep ")$" | awk '{print $1}')
$ echo $update_list
ant commons-lang3-api echarts-api font-awesome-api git github-branch-source github gradle junit pipeline-graph-view pipeline-groovy-lib pipeline-model-api pipeline-model-definition pipeline-model-extensions pipeline-stage-tags-metadata workflow-api workflow-cps workflow-durable-task-step
3.2 批量更新插件
接下来使用 install-plugin
安装所有需要更新的插件,并添加 -restart
参数使 Jenkins 重启以应用更新:
$ java -jar jenkins-cli.jar -s http://localhost:8080 -auth admin: admin_secret_password install-plugin $update_list -restart
Installing ant from update center
Installing commons-lang3-api from update center
Installing echarts-api from update center
...
更新完成后,再次检查是否还有待更新插件:
$ java -jar jenkins-cli.jar -s http://localhost:8080 -auth admin:admin_secret_password list-plugins | grep ")$" | awk '{print $1}'
如果输出为空,说明所有插件均已更新至最新版本。
4. 使用 groovy
命令更新插件
除了 install-plugin
,我们还可以使用 groovy
命令执行 Groovy 脚本来完成插件更新。这种方式更灵活,适合复杂场景。
4.1 执行 Groovy 脚本
$ java -jar jenkins-cli.jar -s http://localhost:8080 -auth admin: admin_secret_password groovy = < update_plugins.groovy
该命令通过标准输入将脚本内容传递给 Jenkins CLI 执行。
4.2 Groovy 脚本内容
以下是 update_plugins.groovy
的内容:
import jenkins.model.*
def plugins = Jenkins.instance.pluginManager.plugins.findAll {
it -> it.hasUpdate()
}.collect {
it -> it.getShortName()
}
Jenkins.instance.pluginManager.install(plugins, false).each{ it -> it.get() }
Jenkins.instance.safeRestart()
逐行说明如下:
- ✅
import jenkins.model.*
:导入 Jenkins 插件管理相关类 - ✅
plugins.findAll { it.hasUpdate() }
:找出所有有待更新的插件 - ✅
collect { it.getShortName() }
:提取插件名称 - ✅
pluginManager.install()
:安装插件列表 - ✅
safeRestart()
:安全重启 Jenkins 以生效更新
执行完毕后,再次检查插件更新状态,确认所有插件均已更新。
5. 总结
本文介绍了两种从命令行更新 Jenkins 插件的方法:
✅ 使用 install-plugin
命令:
- 优点:简单直接,适合一次性更新
- 缺点:灵活性较差,无法处理复杂逻辑
✅ 使用 groovy
命令 + Groovy 脚本:
- 优点:可编写复杂逻辑,适合自动化运维
- 缺点:需要熟悉 Groovy 语法
两种方式都支持 Jenkins 插件的自动化更新,可根据实际场景选择使用。建议将更新操作封装为脚本,便于日常维护和 CI/CD 流程集成。