JENKINS PLUGINS · PART 01
插件不是越多越好
先建立治理底线
做梦的笔 | Jenkins 插件生产治理 · 09 篇
01 看懂插件依赖关系 02 建立可复现安装方式 03 安全完成升级与回滚
插件让 Jenkins 无所不能,也最容易让升级、回滚和安全治理失控。真正专业的做法,不是看到“常用”就全部安装。
《Jenkins 插件生产治理》系列第 1/9 篇
01 先理解 Jenkins 插件体系
一个可维护的 Jenkins 平台通常可以分为以下几层:
流程要点:先明确输入和责任边界,再执行查询、校验与变更,最后保留可追溯结果。
1.1 插件的四种关系
插件包通常是 .hpi 或 .jpi 文件。Jenkins 官方更新中心会提供插件元数据、依赖和最新兼容版本。
1.2 生产环境选择插件的标准
安装前至少检查:
插件是否仍在维护,是否显示“up for adoption”或已停止维护。 插件页面的 Health Score、最近发布时间和未关闭问题。 当前版本要求的 Jenkins 最低版本。 页面是否存在未修复的 Security Warning。 是否已有 Jenkins 核心、Pipeline 标准步骤或现有插件提供同等能力。 是否支持 Pipeline,而不是只支持 Freestyle。 是否会在 Controller 上执行用户脚本、访问网络或渲染 HTML。
原则:只安装有明确使用者、明确用途、明确维护人的插件。不要为了“以后可能用到”预装大量插件。
02 插件安装、更新、回滚和卸载
2.1 Web 页面安装
适合少量插件和测试环境。
进入 Manage Jenkins → Plugins。 在 Available plugins 中搜索插件名称或 ID。 打开插件详情,检查最低 Jenkins 版本、依赖、健康度和安全警告。 勾选插件,选择 Install。 安装完成后做一次测试构建;生产环境建议在维护窗口重启 Controller。
如果可用插件列表为空,可检查更新中心地址、代理、DNS 和 TLS;然后使用 Check now 刷新元数据。
2.2 Jenkins CLI 安装
适合临时自动化,但不如 plugins.txt 容易复现。
BASH
java -jar jenkins-cli.jar \
-s https://jenkins.example.com/ \
-auth admin:API_TOKEN \
install-plugin git workflow-aggregator credentials-binding -deploy
常用选项:
- -deploy
:安装完成后立即加载;并非所有插件都能无重启生效。 - -restart
:成功安装后重启 Jenkins,生产环境慎用。 - SOURCE
:可以是更新中心的插件 ID、本地文件或 URL。
不要把用户名、密码或 API Token 直接写入代码仓库和命令历史。应从受保护的环境变量、临时凭据文件或 Secret 管理系统读取。
2.3 Docker 镜像内预装:推荐的可复现方式
plugins.txt:
TEXT
workflow-aggregator
git
git-parameter
credentials-binding
ssh-agent
uno-choice
pipeline-utility-steps
junit
warnings-ng
email-ext
timestamper
ansicolor
build-timeout
ws-cleanup
configuration-as-code
job-dsl
role-strategy
cloudbees-folder
Dockerfile:
DOCKERFILE
FROM jenkins/jenkins:lts-jdk21
COPY --chown=jenkins:jenkins plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN jenkins-plugin-cli --plugin-file /usr/share/jenkins/ref/plugins.txt
构建时,Jenkins Plugin Installation Manager 会解析并安装依赖。生产环境建议进一步锁定已验证版本,例如:
TEXT
git:5.x.y
credentials-binding:xxx.vabcdef
上面的版本只是格式示意,不应原样使用。正确流程是:在测试环境解析一组与当前 Jenkins LTS 兼容的版本,验证通过后把实际版本锁定到仓库。
2.4 离线安装
在能访问互联网的相同 Jenkins 版本环境中解析插件及全部依赖。 保存插件包、校验值和插件清单。 通过 Manage Jenkins → Plugins → Advanced settings 上传插件包,或放入 $JENKINS_HOME/plugins/。 确认文件属主和权限正确后重启 Jenkins。 在系统信息和已安装插件页面核对加载结果。
不要只下载一个主插件的 .hpi。缺少依赖或依赖版本不兼容,是离线安装失败最常见的原因。
2.5 更新前的标准流程
流程要点:先明确输入和责任边界,再执行查询、校验与变更,最后保留可追溯结果。
至少验证登录、权限、凭据、Webhook、参数页面、共享库、Agent 连接、构建、归档和通知。
2.6 回滚与卸载
更新前完整备份 $JENKINS_HOME,包括 plugins/、任务配置、凭据相关文件和密钥。 插件降级可能遇到配置格式不向后兼容,不应只替换单个 .jpi 后直接启动生产。 卸载前查看 Installed plugins 中的依赖关系,先停用使用该插件的任务。 - Disable
适合观察期;确认没有任务依赖后再 Uninstall。 不要在运行中的 Controller 上手工删除依赖插件文件。
可用以下 Groovy 在 Script Console 查看已加载插件,但 Script Console 权限极高,只应允许少数管理员使用:
GROOVY
jenkins.model.Jenkins.get().pluginManager.plugins
.sort { it.shortName }
.each { p -> println "${p.shortName}:${p.version}" }
/// 写在最后
插件数量不是能力指标。能说明每个插件为什么存在、谁负责、如何升级和回滚,才是生产 Jenkins 的起点。
下一篇:18 个常用插件如何按场景取舍。
我是做梦的笔,持续分享 AI、云原生与研发效能实践。
点赞 · 在看 · 转发
下一篇:18 个常用插件如何按场景取舍。
夜雨聆风