如何从 Jenkins (Hudson) 卸载插件?

Posted

技术标签:

【中文标题】如何从 Jenkins (Hudson) 卸载插件?【英文标题】:How do I uninstall a plugin from Jenkins (Hudson)? 【发布时间】:2011-06-25 07:31:46 【问题描述】:

我的 Jenkins 安装中有一些不再需要的插件。我已经禁用了插件(我的构建仍然有效),我想完全删除插件。完全移除 Jenkins (Hudson) 插件的正确流程是什么?

【问题讨论】:

【参考方案1】:

正如 Jesse Glick 在his answer 中提到的,如果您使用的是 Jenkins 1.487 或更高版本,那么在 Jenkins UI 中有一种卸载插件的本地方法。详情请见JENKINS-3070。

如果您使用的 Jenkins 版本早于 1.487,那么您可以尝试手动卸载插件。正如某些人在 cmets 中指出的那样,这可能不适用于某些平台(在这些情况下,至少升级到 1.487 以便您可以使用官方卸载功能)。

要手动卸载插件,请停止 Hudson/Jenkins,转到您的 HUDSON_HOME/plugins 目录并删除 .hpi 文件和同名文件夹。因此,如果您要删除 CVS 插件,您将同时删除 cvs.hpi 文件和 cvs 目录。

之后,重新启动 Hudson/Jenkins,插件将不再存在。

【讨论】:

是的,无法从 GUI 中卸载它。见issues.hudson-ci.org/browse/HUDSON-3070 @Mark 今天我删除了一堆插件,但 cvs 插件不断被重新创建。任何想法如何永久删除它? 无论我做什么,当我启动 Jenkins 时,所有删除的插件文件都会重新创建。 此方法在 Win Svr 2008 R2 上运行 Jenkins 时不起作用。当停止,删除文件,然后重新启动服务时,文件会自动在文件系统中重新创建。 正确的问题是issues.jenkins-ci.org/browse/JENKINS-3070 - 投票!【参考方案2】:

Jenkins 1.487 增加了卸载插件的 UI:JENKINS-3070

【讨论】:

如果插件是核心,它不会显示删除按钮,如@flip所述。【参考方案3】:

删除 .hpi 文件和对应的 -plugin 目录将有效地删除插件。

但是如果您在工作中配置了属于插件的参数,您的 Hudson 或 tomcat 日志可能包含 * CannotResolveClassException: hudson.plugins ... * 异常,因为它尝试加载插件。这可能会导致构建失败即使构建成功

为了解决这个问题,

转到作业配置并再次保存。这应该摆脱插件参考 如果没有,请进入 hudson 主作业目录并打开以作业命名的文件夹下的 config.xml 并删除对插件的引用 重启哈德森

【讨论】:

这个建议在两个方面都过时了:首先,有一个用于删除插件的 UI;其次,有一个用于批量丢弃旧配置数据的 UI。 其实在 2012 年写这篇文章的时候,删除插件的 UI 就在那里。我当时遇到的问题无法从 UI 解决,因为插件在 Hudson 中触发了异常,因此帖子。对于遇到这些情况的任何人,我认为它不会过时。 您可以使用 Manage Old Data(一个管理监视器)来查看和丢弃属于现在已删除插件的任何配置。无需重新配置单个作业、编辑磁盘上的文件或重新启动。自 1.390(2010 年 3 月)以来一直存在。 建议仍然有效。如果您安装的插件中​​有错误,则它有可能会在 Web 客户端的任何地方抛出异常。那么唯一的选择就是手动删除hpi。【参考方案4】:

Hudson Plugins 解释说,一些核心插件(所谓的“Tier 1”插件)是 Hudson 本身附带的,因此我认为无法删除。

【讨论】:

泰!这就是为什么这些项目没有“卸载”按钮的原因。我很生气被要求更新我不使用的项目,但由于我必须保留它们,所以我正在更新:)。 即使提供删除捆绑插件也会产生误导,因为即使已禁用它们也没有记录,Jenkins 会在下次启动后重新开始加载它们。【参考方案5】:

您可以使用 Jenkins » 插件管理器禁用它。转到已安装选项卡并取消选中要卸载的插件并重新启动 Jenkins。虽然它不会卸载,但至少让它不会出现在配置页面中..

【讨论】:

以上是关于如何从 Jenkins (Hudson) 卸载插件?的主要内容,如果未能解决你的问题,请参考以下文章

在使用像 Hudson/Jenkins 这样的 CI 工具时,我如何成功地将 Maven 发布插件与 GitHub(或 GitHub 企业)一起使用

如何在 Jenkins/Hudson 中以编程方式设置环境变量?

作为预构建步骤,我如何触发 hudson 的另一项工作?

使用 Maven、SVN 和 Hudson(jenkins) 发布

Linux-Jenkins安装部署

部署Jenkins+Gitlab实现持续集成