管理Jenkins插件

插件是扩展Jenkins功能、满足组织或用户特定需求的主要方式。Jenkins控制器可安装一千多种插件,集成构建工具、云服务商、分析工具等。

可以从更新中心自动下载插件及其依赖。更新中心是Jenkins项目运营的服务,列出由社区成员开发和维护的开源插件。

本节涵盖从Web界面中的插件管理基础,到修改控制器文件系统等操作。

安装插件

Jenkins提供两种在控制器上安装插件的方法:

  1. 使用Web界面中的插件管理器(Plugin Manager)。

  2. 使用Jenkins CLI的install-plugin命令。

两种方式都会让Jenkins加载插件,但所需访问权限及使用时的取舍可能不同。

两种方式都要求控制器能够从更新中心下载元数据,可以是Jenkins项目运营的主更新中心[1],也可以是自定义更新中心。

插件打包为自包含的.hpi文件,其中包括运行所需的代码、图片和其他资源。

通过Web界面安装

最简单、最常用的方式是管理员进入Manage Jenkins → Plugins页面。

在Available选项卡中,可以搜索并选择已配置更新中心提供的插件:

Available tab in the Plugin Manager

大多数插件只需勾选旁边的复选框,再点击Install without restart,即可立即安装和使用。

若可用插件列表为空,可能是控制器配置错误,或尚未从更新中心下载元数据。点击Check now,可强制Jenkins尝试连接已配置的更新中心。

使用Jenkins CLI

通过Jenkins CLI安装插件

管理员也可以使用Jenkins CLI安装插件。管理Jenkins环境的脚本或配置管理代码,有时需要在没有Web界面交互的情况下安装插件。CLI让命令行用户或自动化工具能够下载插件及其依赖。

java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin SOURCE ... [-deploy] [-name VAL] [-restart]
Installs a plugin either from a file, an URL, or from update center.

 SOURCE    : If this points to a local file, that file will be installed. If
             this is an URL, Jenkins downloads the URL and installs that as a
             plugin.Otherwise the name is assumed to be the short name of the
             plugin in the existing update center (like "findbugs"),and the
             plugin will be installed from the update center.
 -deploy   : Deploy plugins right away without postponing them until the reboot.
 -name VAL : If specified, the plugin will be installed as this short name
             (whereas normally the name is inferred from the source name
             automatically).
 -restart  : Restart Jenkins upon successful installation.

高级安装

更新中心仅提供插件最新发布版本。如果需要旧版,管理员可以下载旧版.hpi归档,并在控制器上手动安装。

Jenkins把下载的插件保存到plugins目录,并使用.jpi后缀,无论原文件后缀是.jpi还是.hpi。

手动复制插件归档到plugins目录时,应使用.jpi后缀,与更新中心安装的文件保持一致。

通过Web界面安装归档

下载.hpi文件后,已登录的管理员可以通过Web界面上传:

  1. 进入Manage Jenkins → Plugins。

  2. 点击Advanced选项卡。

  3. 在Deploy Plugin区域选择本地.hpi文件,或填写归档URL。

  4. 部署插件文件。

Advanced tab in the Plugin Manager

上传后,必须手动重启Jenkins控制器,更改才会生效。

直接在控制器上安装

系统管理员下载.hpi文件后,也可以手动放入指定文件系统位置。

将下载的.hpi复制到控制器的JENKINS_HOME/plugins目录,例如Debian上JENKINS_HOME通常是/var/lib/jenkins。手动复制时,应把归档命名为.jpi后缀,与更新中心安装的插件一致。

重启控制器后,插件才会加载并可用。

更新站点[1]的插件目录名不一定与插件显示名称相同。在plugins.jenkins.io搜索目标插件,可以找到适当的归档链接。

更新插件

可用更新列在Plugins → Updates选项卡中。勾选所需更新,再点击Download now and install after restart。

Updates tab in the Plugin Manager

默认情况下,控制器每24小时向更新中心检查一次更新。手动检查时,点击Updates选项卡中的Check now即可。

列出已安装插件及版本

获取已安装插件及版本列表,最简单的方法是使用Jenkins脚本控制台。

操作步骤如下:

  1. 打开Jenkins脚本控制台:

    • 进入Manage Jenkins → Script Console。

  2. 运行以下脚本列出插件及其版本:

   Jenkins.instance.pluginManager.plugins.each {
      println("${it.getShortName()}: ${it.getVersion()}")
   }

该脚本遍历所有已安装插件,打印短名称与版本。

移除插件

不再使用的插件应从控制器移除。这能够减少启动或运行时的内存开销、精简Web界面中的配置选项,并减少未来插件更新时发生冲突的可能。

卸载插件

以下视频介绍从Jenkins卸载插件的流程。

最简单的方法是进入Plugins → Installed。Jenkins会自动判断哪些插件可以安全卸载,即没有被其他插件依赖,并为它们提供卸载按钮。

Installed tab in the Plugin Manager

也可以删除控制器JENKINS_HOME/plugins目录中相应的.jpi文件。控制器重启之前,该插件仍会继续工作。

如果删除的插件仍被其他插件依赖,Jenkins控制器可能无法正常启动。

卸载插件不会删除它创建的配置。如果现有任务、节点、视图或构建等配置引用了插件生成的数据,Jenkins启动时会警告部分配置无法完整加载,并忽略无法识别的数据。

只要这些配置尚未被覆盖,它们就会保留;重新安装插件后,对应配置值会重新出现。

移除旧数据

Jenkins提供清除已卸载插件遗留配置的功能。进入Manage Jenkins → Manage Old Data,检查并删除旧数据。

禁用插件

禁用是较温和的停用方式。Jenkins仍认为插件已安装,但不启动它,也不显示由它提供的扩展功能。

管理员可以在Plugins → Installed选项卡取消插件的勾选来禁用它,见下图。

Installed tab in the Plugin Manager

系统管理员也可在控制器上创建文件,例如JENKINS_HOME/plugins/PLUGIN_NAME.jpi.disabled。

禁用插件创建的配置在这方面类似卸载后的配置:启动时产生警告,除此之外会被忽略。

使用Jenkins CLI

也可以通过Jenkins CLI的enable-plugin或disable-plugin命令启用、禁用插件。

enable-plugin加入于v2.136,disable-plugin加入于v2.151。

enable-plugin接收要启用的插件列表。所选插件依赖的插件也会一并启用。

java -jar jenkins-cli.jar -s http://localhost:8080/ enable-plugin PLUGIN ... [-restart]
Enables one or more installed plugins transitively.

 PLUGIN   : Enables the plugins with the given short names and their
            dependencies.
 -restart : Restart Jenkins after enabling plugins.

disable-plugin接收要禁用的插件列表,输出成功和失败操作的信息。若只想看错误,可以指定-quiet。当指定插件被其他已启用插件作为可选或必需依赖时,-strategy控制如何处理。

java -jar jenkins-cli.jar -s http://localhost:8080/ disable-plugin PLUGIN ... [-quiet (-q)]
[-restart (-r)] [-strategy (-s) strategy]
Disable one or more installed plugins.
Disable the plugins with the given short names. You can define how to proceed with the
dependant plugins and if a restart after should be done. You can also set the quiet mode
to avoid extra info in the console.

 PLUGIN                  : Plugins to be disabled.
 -quiet (-q)             : Be quiet, print only the error messages
 -restart (-r)           : Restart Jenkins after disabling plugins.
 -strategy (-s) strategy : How to process the dependant plugins.
                           - none: if a mandatory dependant plugin exists and
                           it is enabled, the plugin cannot be disabled
                           (default value).
                           - mandatory: all mandatory dependant plugins are
                           also disabled, optional dependant plugins remain
                           enabled.
                           - all: all dependant plugins are also disabled, no
                           matter if its dependency is optional or mandatory.

与Web界面操作一样,CLI更改也要在Jenkins重启后生效。-restart选项会在命令成功结束后安全重启控制器,使更改立即应用。

固定版本的插件

固定插件功能已在Jenkins 2.0中移除。Jenkins 2.0之后的版本不再捆绑插件,而是通过向导安装常用插件。

固定插件的概念适用于Jenkins 1.x捆绑的插件,例如Matrix Authorization插件。

默认情况下,每次升级Jenkins,捆绑插件都会覆盖JENKINS_HOME中当前安装的相应版本。

但如果手动更新过某个捆绑插件,Jenkins会将它固定到该版本,并创建空文件JENKINS_HOME/plugins/PLUGIN_NAME.jpi.pinned作为标记。

启动Jenkins时,捆绑插件不会覆盖固定版本。较新的Jenkins版本会在固定插件比捆绑版本旧时发出警告。

将捆绑插件更新为更新中心提供的版本是安全的,通常也是获得新功能和修复的必要方式。捆绑版本只偶尔更新,并不持续同步。

插件管理器可以显式取消固定。也可手动创建或删除JENKINS_HOME/plugins/PLUGIN_NAME.hpi.pinned来控制这一行为。存在标记文件时,使用用户指定版本;不存在时,Jenkins启动时恢复默认版本。

什么是隐式依赖

Jenkins核心中的功能有时会被拆分出来,移入独立插件。

Subversion和JUnit等插件最初都是Jenkins核心功能。拆分之前,同样依赖某个Jenkins版本的其他插件可能使用过这些功能,也可能没有。为避免插件依赖的功能被移出核心后失效,如果插件声明依赖的是拆分之前的核心版本,就必须假定它依赖拆分出来的插件,即使这种依赖没有显式声明。

不经常更新最低Jenkins核心版本的插件,会随时间积累隐式依赖。

隐式依赖为何存在

之所以称为“隐式”,是因为插件没有明确声明它;之所以视为依赖,是因为核心无法确定插件是否需要那些在拆分之前由核心提供的API。

例如,Instance Identity从核心拆分后,Jenkins无法知道其他插件是否需要它原来在核心中提供的功能,于是产生隐式依赖。

管理员可以在插件管理页面查看隐式依赖。将鼠标悬停在卸载按钮上,会显示具有隐式依赖的插件列表。

Hover over the uninstall button to see Implied Dependencies

如何移除隐式依赖

发布依赖更新最低Jenkins核心版本的插件版本,可以移除隐式依赖。改进插件教程提供了帮助开发者更新最低核心版本要求的步骤。

什么是健康评分

插件管理器在插件旁显示名为Health Score的指标。

Plugin Health Score in the Plugin Manager available listing

在可用更新页面与已安装插件页面中,都可以看到同一指标。

评分始终基于最新可用数据,不是某个插件发布版本的评分。因此,已安装或更新页面显示的分数,不代表当前已安装版本的状态。

该指标来自Plugin Health Scoring项目。

这个服务收集每个插件的数据。

数据可能来自源码、插件仓库内容,也可能是未关闭拉取请求数量等外部指标。

这些数据用于评估项目状态。所有插件使用同一套评估方式,因此可以公平比较。

界面只显示总分,但评分背后的详情可在插件站点每个插件的健康评分区域查看:

Plugin health score on the plugins site

也可直接在Plugin Health Scoring服务查看。将插件名加在评分URL后即可。例如Mailer插件的地址是plugin-health.jenkins.io/scores/mailer。

评分的每个部分可能评估一个或多个要素,不同部分及要素对总分的影响大小也可能不同。

如何提高健康评分

Plugin Health Scoring会频繁评估收集到的数据。查看插件站点上的建议,可以了解如何提高评分。

社区始终欢迎接手维护插件,或向任何插件贡献改进。


原文:管理Jenkins插件;作者:Jenkins文档贡献者。版本或日期:官方原文抓取版本。原文及源码权利归相应权利人所有。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容